; ===========================================================================
.solo:00066500
.solo:00066500 ; Segment type: Pure code
.solo:00066500 AREA .solo, CODE
.solo:00066500 ; ORG 0x66500
.solo:00066500 CODE16
.solo:00066500
.solo:00066500 ; =============== S U B R O U T I N E =======================================
.solo:00066500
.solo:00066500 ; Attributes: bp-based frame
.solo:00066500
.solo:00066500 EXPORT getAuthString
.solo:00066500 getAuthString ; CODE XREF: j_getAuthString+8↑j
.solo:00066500 ; DATA XREF: LOAD:00000490↑o ...
.solo:00066500
.solo:00066500 var_138 = -0x138
.solo:00066500 var_134 = -0x134
.solo:00066500 var_130 = -0x130
.solo:00066500 var_12C = -0x12C
.solo:00066500 var_128 = -0x128
.solo:00066500 anonymous_3 = -0x124
.solo:00066500 var_120 = -0x120
.solo:00066500 var_11C = -0x11C
.solo:00066500 var_110 = -0x110
.solo:00066500 anonymous_1 = -0x10C
.solo:00066500 var_108 = -0x108
.solo:00066500 var_100 = -0x100
.solo:00066500 anonymous_0 = -0xFC
.solo:00066500 var_F8 = -0xF8
.solo:00066500 var_F0 = -0xF0
.solo:00066500 anonymous_2 = -0xEC
.solo:00066500 var_E4 = -0xE4
.solo:00066500 var_DC = -0xDC
.solo:00066500 var_D8 = -0xD8
.solo:00066500 var_D4 = -0xD4
.solo:00066500 var_D0 = -0xD0
.solo:00066500 var_C8 = -0xC8
.solo:00066500 var_C4 = -0xC4
.solo:00066500 var_C0 = -0xC0
.solo:00066500 var_B8 = -0xB8
.solo:00066500 var_B4 = -0xB4
.solo:00066500 var_B0 = -0xB0
.solo:00066500 var_A8 = -0xA8
.solo:00066500 anonymous_4 = -0xA4
.solo:00066500 var_A0 = -0xA0
.solo:00066500 var_35 = -0x35
.solo:00066500 s = -0x2B
.solo:00066500 var_20 = -0x20
.solo:00066500
.solo:00066500 ; __unwind { // j___gxx_personality_v0
.solo:00066500 PUSH {R4-R7,LR}
.solo:00066502 ADD R7, SP, #0xC
.solo:00066504 PUSH.W {R8-R11}
.solo:00066508 SUB SP, SP, #0x11C
.solo:0006650A STR R3, [SP,#0x138+var_12C]
.solo:0006650C MOV R9, R0
.solo:0006650E LDR R0, =(__stack_chk_guard_ptr - 0x66518)
.solo:00066510 MOV R1, R2
.solo:00066512 MOV R8, R2
.solo:00066514 ADD R0, PC ; __stack_chk_guard_ptr
.solo:00066516 LDR.W R10, [R0] ; __stack_chk_guard
.solo:0006651A LDR.W R0, [R10]
.solo:0006651E STR R0, [SP,#0x138+var_20]
.solo:00066520 MOV R0, R9
.solo:00066522 BLX j__Z14getPackageNameP7_JNIEnvP8_jobject ; getPackageName(_JNIEnv *,_jobject *)
.solo:00066526 MOV R1, R0
.solo:00066528 LDR.W R0, [R9]
.solo:0006652C MOVS R2, #0
.solo:0006652E MOVS R4, #0
.solo:00066530 MOV R11, R1
.solo:00066532 LDR.W R3, [R0,#0x2A4]
.solo:00066536 MOV R0, R9
.solo:00066538 BLX R3
.solo:0006653A STR R4, [SP,#0x138+var_B0]
.solo:0006653C MOV R5, R0
.solo:0006653E STRD.W R4, R4, [SP,#0x80]
.solo:00066542 BLX strlen
.solo:00066546 MOV R2, R0
.solo:00066548 ADD R0, SP, #0x138+var_B8
.solo:0006654A MOV R1, R5
.solo:0006654C STR R5, [SP,#0x138+var_130]
.solo:0006654E BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:00066552 LDR R3, =(byte_7C0B0 - 0x6655C)
.solo:00066554 LDRB.W R0, [SP,#0x138+var_B8]
.solo:00066558 ADD R3, PC ; byte_7C0B0
.solo:0006655A LDR R2, [SP,#0x138+var_B4]
.solo:0006655C ANDS.W R5, R0, #1
.solo:00066560 LDRB R6, [R3]
.solo:00066562 LDR R1, [R3,#(dword_7C0B4 - 0x7C0B0)]
.solo:00066564 IT EQ
.solo:00066566 LSREQ R2, R0, #1
.solo:00066568 ANDS.W R4, R6, #1
.solo:0006656C IT EQ
.solo:0006656E LSREQ R1, R6, #1
.solo:00066570 CMP R2, R1
.solo:00066572 BNE loc_665A2
.solo:00066574 LDR R1, [R3,#(dword_7C0B8 - 0x7C0B0)]
.solo:00066576 CMP R4, #0
.solo:00066578 IT EQ
.solo:0006657A ADDEQ R1, R3, #1
.solo:0006657C CBNZ R5, loc_6659A
.solo:0006657E LSRS R0, R0, #1
.solo:00066580 ADD R2, SP, #0x138+var_B8
.solo:00066582 NEGS R0, R0
.solo:00066584 B loc_66592
.solo:00066586 ; ---------------------------------------------------------------------------
.solo:00066586
.solo:00066586 loc_66586 ; CODE XREF: getAuthString+96↓j
.solo:00066586 LDRB R3, [R1]
.solo:00066588 LDRB R6, [R2]
.solo:0006658A CMP R6, R3
.solo:0006658C BNE loc_665A2
.solo:0006658E ADDS R0, #1
.solo:00066590 ADDS R1, #1
.solo:00066592
.solo:00066592 loc_66592 ; CODE XREF: getAuthString+84↑j
.solo:00066592 ADDS R2, #1
.solo:00066594 CMP R0, #0
.solo:00066596 BNE loc_66586
.solo:00066598 B loc_665D2
.solo:0006659A ; ---------------------------------------------------------------------------
.solo:0006659A
.solo:0006659A loc_6659A ; CODE XREF: getAuthString+7C↑j
.solo:0006659A LDR R0, [SP,#0x138+var_B0]
.solo:0006659C BLX j__ZNSt6__ndk111char_traitsIcE7compareEPKcS3_j ; std::__ndk1::char_traits<char>::compare(char const*,char const*,uint)
.solo:000665A0 CBZ R0, loc_665D2
.solo:000665A2
.solo:000665A2 loc_665A2 ; CODE XREF: getAuthString+72↑j
.solo:000665A2 ; getAuthString+8C↑j
.solo:000665A2 LDR.W R0, [R9]
.solo:000665A6 LDR.W R2, [R0,#0x29C]
.solo:000665AA LDR R1, =(aWrongPackageNa - 0x665B0)
.solo:000665AC ADD R1, PC ; "wrong package name"
.solo:000665AE MOV R0, R9
.solo:000665B0 BLX R2
.solo:000665B2
.solo:000665B2 loc_665B2 ; CODE XREF: getAuthString+40A↓j
.solo:000665B2 MOV R4, R0
.solo:000665B4
.solo:000665B4 loc_665B4 ; CODE XREF: getAuthString+3F8↓j
.solo:000665B4 ADD R0, SP, #0x138+var_B8
.solo:000665B6 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000665BA LDR R0, [SP,#0x138+var_20]
.solo:000665BC LDR.W R1, [R10]
.solo:000665C0 SUBS R0, R1, R0
.solo:000665C2 ITTTT EQ
.solo:000665C4 MOVEQ R0, R4
.solo:000665C6 ADDEQ SP, SP, #0x11C
.solo:000665C8 POPEQ.W {R8-R11}
.solo:000665CC POPEQ {R4-R7,PC}
.solo:000665CE BLX __stack_chk_fail
.solo:000665D2 ; ---------------------------------------------------------------------------
.solo:000665D2
.solo:000665D2 loc_665D2 ; CODE XREF: getAuthString+98↑j
.solo:000665D2 ; getAuthString+A0↑j
.solo:000665D2 MOV R0, R9
.solo:000665D4 MOV R1, R8
.solo:000665D6 MOV R2, R11
.solo:000665D8 BLX j__Z14checkSignatureP7_JNIEnvP8_jobjectP8_jstring ; checkSignature(_JNIEnv *,_jobject *,_jstring *)
.solo:000665DC CMP R0, #0
.solo:000665DE BEQ.W loc_668FA
.solo:000665E2 STR.W R10, [SP,#0x138+var_134]
.solo:000665E6 MOVS R0, #0
.solo:000665E8 LDR R1, =(aLdtm3ctziftmhf - 0x665F0)
.solo:000665EA STR R0, [SP,#0x138+var_C0]
.solo:000665EC ADD R1, PC ; "ldTM3cTZiFTMhFzMlFWN2cjMjVDNzQWYxYTOwU2"...
.solo:000665EE STRD.W R0, R0, [SP,#0x70]
.solo:000665F2 ADD.W R10, SP, #0x138+var_C8
.solo:000665F6 MOVS R2, #0xC0
.solo:000665F8 MOV R0, R10
.solo:000665FA BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:000665FE LDRB.W R0, [SP,#0x138+var_C8]
.solo:00066602 LDR R6, [SP,#0x138+var_C0]
.solo:00066604 LDR R3, [SP,#0x138+var_C4]
.solo:00066606 ANDS.W R2, R0, #1
.solo:0006660A IT EQ
.solo:0006660C LSREQ R3, R0, #1
.solo:0006660E ADD.W R0, R10, #1
.solo:00066612 MOV R1, R6
.solo:00066614 IT EQ
.solo:00066616 MOVEQ R1, R0
.solo:00066618 CBZ R3, loc_6663A
.solo:0006661A ADDS R2, R1, R3
.solo:0006661C SUBS R2, #1
.solo:0006661E B loc_6662C
.solo:00066620 ; ---------------------------------------------------------------------------
.solo:00066620
.solo:00066620 loc_66620 ; CODE XREF: getAuthString+12E↓j
.solo:00066620 LDRB R3, [R1]
.solo:00066622 LDRB R6, [R2]
.solo:00066624 STRB.W R6, [R1],#1
.solo:00066628 STRB.W R3, [R2],#-1
.solo:0006662C
.solo:0006662C loc_6662C ; CODE XREF: getAuthString+11E↑j
.solo:0006662C CMP R1, R2
.solo:0006662E BCC loc_66620
.solo:00066630 LDRB.W R1, [SP,#0x138+var_C8]
.solo:00066634 LDR R6, [SP,#0x138+var_C0]
.solo:00066636 AND.W R2, R1, #1
.solo:0006663A
.solo:0006663A loc_6663A ; CODE XREF: getAuthString+118↑j
.solo:0006663A CMP R2, #0
.solo:0006663C IT EQ
.solo:0006663E MOVEQ R6, R0
.solo:00066640 MOV R0, R6 ; s
.solo:00066642 BLX strlen
.solo:00066646 MOV R1, R0 ; unsigned int
.solo:00066648 MOV R0, R6 ; char *
.solo:0006664A BLX j__Z10b64_decodePKcj ; b64_decode(char const*,uint)
.solo:0006664E MOV R6, R0
.solo:00066650 MOVS R0, #0
.solo:00066652 STR R0, [SP,#0x138+var_D0]
.solo:00066654 STRD.W R0, R0, [SP,#0x60]
.solo:00066658 MOV R0, R6 ; s
.solo:0006665A BLX strlen
.solo:0006665E MOV R2, R0
.solo:00066660 ADD.W R10, SP, #0x138+var_D8
.solo:00066664 MOV R1, R6
.solo:00066666 MOV R0, R10
.solo:00066668 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:0006666C LDRB.W R1, [SP,#0x138+var_D8]
.solo:00066670 LDR R0, [SP,#0x138+var_D0]
.solo:00066672 LDR R6, [SP,#0x138+var_D4]
.solo:00066674 ANDS.W R3, R1, #1
.solo:00066678 IT EQ
.solo:0006667A LSREQ R6, R1, #1
.solo:0006667C ADD.W R1, R10, #1
.solo:00066680 MOV R2, R0
.solo:00066682 IT EQ
.solo:00066684 MOVEQ R2, R1
.solo:00066686 CBZ R6, loc_666A8
.solo:00066688 ADDS R0, R2, R6
.solo:0006668A SUBS R0, #1
.solo:0006668C B loc_6669A
.solo:0006668E ; ---------------------------------------------------------------------------
.solo:0006668E
.solo:0006668E loc_6668E ; CODE XREF: getAuthString+19C↓j
.solo:0006668E LDRB R3, [R2]
.solo:00066690 LDRB R6, [R0]
.solo:00066692 STRB.W R6, [R2],#1
.solo:00066696 STRB.W R3, [R0],#-1
.solo:0006669A
.solo:0006669A loc_6669A ; CODE XREF: getAuthString+18C↑j
.solo:0006669A CMP R2, R0
.solo:0006669C BCC loc_6668E
.solo:0006669E LDRB.W R2, [SP,#0x138+var_D8]
.solo:000666A2 LDR R0, [SP,#0x138+var_D0]
.solo:000666A4 AND.W R3, R2, #1
.solo:000666A8
.solo:000666A8 loc_666A8 ; CODE XREF: getAuthString+186↑j
.solo:000666A8 CMP R3, #0
.solo:000666AA IT EQ
.solo:000666AC MOVEQ R0, R1 ; s
.solo:000666AE BLX strlen
.solo:000666B2 SUB.W R3, R0, #0x40
.solo:000666B6 ADD R0, SP, #0x138+var_E4
.solo:000666B8 MOV R1, R10
.solo:000666BA MOVS R2, #0x20 ; ' '
.solo:000666BC STR.W R10, [SP,#0x138+var_138]
.solo:000666C0 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_jjRKS4_ ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::basic_string(std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> const&,uint,uint,std::__ndk1::allocator<char> const&)
.solo:000666C4 LDRB.W R1, [SP,#0x138+var_E4]
.solo:000666C8 LDR R6, [SP,#0x138+var_DC]
.solo:000666CA LSLS R1, R1, #0x1F
.solo:000666CC IT EQ
.solo:000666CE ADDEQ R6, R0, #1
.solo:000666D0 MOV R0, R6 ; s
.solo:000666D2 BLX strlen
.solo:000666D6 MOV R1, R0 ; unsigned int
.solo:000666D8 MOV R0, R6 ; char *
.solo:000666DA BLX j__Z10b64_decodePKcj ; b64_decode(char const*,uint)
.solo:000666DE MOV R10, R0
.solo:000666E0 MOVS R0, #0 ; timer
.solo:000666E2 BLX time
.solo:000666E6 LDR R1, =(aD - 0x666F2)
.solo:000666E8 SUB.W R8, R7, #-s
.solo:000666EC MOV R6, R0
.solo:000666EE ADD R1, PC ; "%d"
.solo:000666F0 MOV R0, R8 ; s
.solo:000666F2 MOV R2, R6
.solo:000666F4 BLX sprintf
.solo:000666F8 LDR R1, =(aX - 0x66704)
.solo:000666FA SUB.W R0, R7, #-var_35 ; s
.solo:000666FE MOV R2, R6
.solo:00066700 ADD R1, PC ; "%x"
.solo:00066702 BLX sprintf
.solo:00066706 LDR R1, =(aNativeLib - 0x6670E)
.solo:00066708 LDR R2, =(aTimeS - 0x66710)
.solo:0006670A ADD R1, PC ; "NATIVE-LIB"
.solo:0006670C ADD R2, PC ; "time %s"
.solo:0006670E MOVS R0, #3
.solo:00066710 MOV R3, R8
.solo:00066712 BLX __android_log_print
.solo:00066716 LDR R1, =(aNativeLib - 0x6671E)
.solo:00066718 LDR R2, =(aTimeS - 0x66720)
.solo:0006671A ADD R1, PC ; "NATIVE-LIB"
.solo:0006671C ADD R2, PC ; "time %s"
.solo:0006671E SUB.W R3, R7, #-var_35
.solo:00066722 MOVS R0, #3
.solo:00066724 BLX __android_log_print
.solo:00066728 SUB.W R6, R7, #-s
.solo:0006672C MOVS R0, #0
.solo:0006672E STR R0, [SP,#0x138+var_F8]
.solo:00066730 STRD.W R0, R0, [SP,#0x38]
.solo:00066734 MOV R0, R6 ; s
.solo:00066736 BLX strlen
.solo:0006673A MOV R2, R0
.solo:0006673C ADD R0, SP, #0x138+var_100
.solo:0006673E MOV R1, R6
.solo:00066740 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:00066744 ADD R0, SP, #0x138+var_A8 ; this
.solo:00066746 ADD R1, SP, #0x138+var_100
.solo:00066748 BLX j__ZN3MD5C2ERKNSt6__ndk112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE ; MD5::MD5(std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> const&)
.solo:0006674C ADD.W R8, SP, #0x138+var_F0
.solo:00066750 ADD R1, SP, #0x138+var_A8
.solo:00066752 MOV R0, R8 ; this
.solo:00066754 BLX j__ZNK3MD59hexdigestEv ; MD5::hexdigest(void)
.solo:00066758 ADD R0, SP, #0x138+var_100
.solo:0006675A BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:0006675E MOVS R0, #0
.solo:00066760 STR R0, [SP,#0x138+var_F8]
.solo:00066762 STRD.W R0, R0, [SP,#0x38]
.solo:00066766 MOV R0, R10 ; s
.solo:00066768 BLX strlen
.solo:0006676C MOV R2, R0
.solo:0006676E ADD R0, SP, #0x138+var_100
.solo:00066770 MOV R1, R10
.solo:00066772 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:00066776 LDR.W R0, [R9]
.solo:0006677A LDR.W R3, [R0,#0x2A4]
.solo:0006677E LDR R1, [SP,#0x138+var_12C]
.solo:00066780 MOV R0, R9
.solo:00066782 MOVS R2, #0
.solo:00066784 MOVS R6, #0
.solo:00066786 BLX R3
.solo:00066788 MOV R10, R0
.solo:0006678A ADD R0, SP, #0x138+var_110
.solo:0006678C MOVS R1, #0
.solo:0006678E STR R6, [SP,#0x138+var_108]
.solo:00066790 STRD.W R6, R6, [SP,#0x28]
.solo:00066794 B loc_6679C
.solo:00066796 ; ---------------------------------------------------------------------------
.solo:00066796
.solo:00066796 loc_66796 ; CODE XREF: getAuthString+29E↓j
.solo:00066796 STR.W R6, [R0,R1,LSL#2]
.solo:0006679A ADDS R1, #1
.solo:0006679C
.solo:0006679C loc_6679C ; CODE XREF: getAuthString+294↑j
.solo:0006679C CMP R1, #3
.solo:0006679E BNE loc_66796
.solo:000667A0 ADD R0, SP, #0x138+var_110
.solo:000667A2 ADD R1, SP, #0x138+var_100
.solo:000667A4 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_ ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::operator=(std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> const&)
.solo:000667A8 LDRD.W R2, R1, [SP,#0x4C]
.solo:000667AC LDRB.W R0, [SP,#0x138+var_F0]
.solo:000667B0 ANDS.W R3, R0, #1
.solo:000667B4 ITT EQ
.solo:000667B6 ADDEQ.W R1, R8, #1
.solo:000667BA LSREQ R2, R0, #1
.solo:000667BC ADD R0, SP, #0x138+var_110
.solo:000667BE BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*,uint)
.solo:000667C2 LDR R1, =(asc_71EEA - 0x667C8)
.solo:000667C4 ADD R1, PC ; "$"
.solo:000667C6 ADD R0, SP, #0x138+var_110
.solo:000667C8 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:000667CC ADD R0, SP, #0x138+var_110
.solo:000667CE MOV R1, R10
.solo:000667D0 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:000667D4 LDR R1, =(asc_71EEC - 0x667DA)
.solo:000667D6 ADD R1, PC ; "&"
.solo:000667D8 ADD R0, SP, #0x138+var_110
.solo:000667DA BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:000667DE LDRD.W R2, R1, [SP,#0x84]
.solo:000667E2 LDRB.W R0, [SP,#0x138+var_B8]
.solo:000667E6 ANDS.W R3, R0, #1
.solo:000667EA ADD R3, SP, #0x138+var_B8
.solo:000667EC ITT EQ
.solo:000667EE ADDEQ R1, R3, #1
.solo:000667F0 LSREQ R2, R0, #1
.solo:000667F2 ADD.W R8, SP, #0x138+var_110
.solo:000667F6 MOV R0, R8
.solo:000667F8 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*,uint)
.solo:000667FC LDRB.W R0, [SP,#0x138+var_110]
.solo:00066800 LDR R6, [SP,#0x138+var_108]
.solo:00066802 LSLS R0, R0, #0x1F
.solo:00066804 IT EQ
.solo:00066806 ADDEQ.W R6, R8, #1
.solo:0006680A MOV R0, R6 ; s
.solo:0006680C BLX strlen
.solo:00066810 MOV R1, R0 ; unsigned int
.solo:00066812 MOV R0, R6 ; unsigned __int8 *
.solo:00066814 BLX j__Z10b64_encodePKhj ; b64_encode(uchar const*,uint)
.solo:00066818 MOV R6, R0
.solo:0006681A MOVS R0, #0
.solo:0006681C STR R0, [SP,#0x138+var_120]
.solo:0006681E STRD.W R0, R0, [SP,#0x10]
.solo:00066822 MOV R0, R6 ; s
.solo:00066824 BLX strlen
.solo:00066828 MOV R2, R0
.solo:0006682A ADD R0, SP, #0x138+var_128
.solo:0006682C MOV R1, R6
.solo:0006682E BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::__init(char const*,uint)
.solo:00066832 ADD R0, SP, #0x138+var_A8 ; this
.solo:00066834 ADD R1, SP, #0x138+var_128
.solo:00066836 BLX j__ZN3MD5C2ERKNSt6__ndk112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE ; MD5::MD5(std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> const&)
.solo:0006683A ADD R6, SP, #0x138+var_A8
.solo:0006683C ADD R0, SP, #0x138+var_11C ; this
.solo:0006683E MOV R1, R6
.solo:00066840 BLX j__ZNK3MD59hexdigestEv ; MD5::hexdigest(void)
.solo:00066844 ADD R0, SP, #0x138+var_128
.solo:00066846 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:0006684A MOVS R0, #0
.solo:0006684C MOVS R1, #0
.solo:0006684E STR R0, [SP,#0x138+var_A0]
.solo:00066850 STRD.W R0, R0, [SP,#0x90]
.solo:00066854 B loc_6686A
.solo:00066854 ; ---------------------------------------------------------------------------
.solo:00066856 ALIGN 4
.solo:00066858 off_66858 DCD __stack_chk_guard_ptr - 0x66518
.solo:00066858 ; DATA XREF: getAuthString+E↑r
.solo:0006685C off_6685C DCD byte_7C0B0 - 0x6655C
.solo:0006685C ; DATA XREF: getAuthString+52↑r
.solo:00066860 off_66860 DCD aWrongPackageNa - 0x665B0
.solo:00066860 ; DATA XREF: getAuthString+AA↑r
.solo:00066860 ; "wrong package name"
.solo:00066864 ; ---------------------------------------------------------------------------
.solo:00066864
.solo:00066864 loc_66864 ; CODE XREF: getAuthString+36C↓j
.solo:00066864 STR.W R0, [R6,R1,LSL#2]
.solo:00066868 ADDS R1, #1
.solo:0006686A
.solo:0006686A loc_6686A ; CODE XREF: getAuthString+354↑j
.solo:0006686A CMP R1, #3
.solo:0006686C BNE loc_66864
.solo:0006686E ADD R0, SP, #0x138+var_A8
.solo:00066870 ADD R1, SP, #0x138+var_11C
.solo:00066872 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_ ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::operator=(std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>> const&)
.solo:00066876 ADD R0, SP, #0x138+var_A8
.solo:00066878 MOV R1, R10
.solo:0006687A BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:0006687E LDR R1, =(a0x - 0x66884)
.solo:00066880 ADD R1, PC ; "0x"
.solo:00066882 ADD R0, SP, #0x138+var_A8
.solo:00066884 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:00066888 ADD R6, SP, #0x138+var_A8
.solo:0006688A SUB.W R1, R7, #-var_35
.solo:0006688E MOV R0, R6
.solo:00066890 BLX j__ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::append(char const*)
.solo:00066894 LDR.W R0, [R9]
.solo:00066898 LDR.W R3, [R0,#0x2A8]
.solo:0006689C LDR R2, [SP,#0x138+var_130]
.solo:0006689E MOV R0, R9
.solo:000668A0 MOV R1, R11
.solo:000668A2 BLX R3
.solo:000668A4 LDR.W R0, [R9]
.solo:000668A8 LDR.W R3, [R0,#0x2A8]
.solo:000668AC LDR R1, [SP,#0x138+var_12C]
.solo:000668AE MOV R0, R9
.solo:000668B0 MOV R2, R10
.solo:000668B2 BLX R3
.solo:000668B4 LDR.W R0, [R9]
.solo:000668B8 LDRB.W R2, [SP,#0x138+var_A8]
.solo:000668BC LDR R1, [SP,#0x138+var_A0]
.solo:000668BE LDR.W R3, [R0,#0x29C]
.solo:000668C2 LSLS R0, R2, #0x1F
.solo:000668C4 IT EQ
.solo:000668C6 ADDEQ R1, R6, #1
.solo:000668C8 MOV R0, R9
.solo:000668CA BLX R3
.solo:000668CC MOV R4, R0
.solo:000668CE LDR R0, =(_ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev_ptr - 0x668D4)
.solo:000668D0 ADD R0, PC ; _ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev_ptr
.solo:000668D2 LDR R5, [R0] ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string() ...
.solo:000668D4 ADD R0, SP, #0x138+var_A8
.solo:000668D6 BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668D8 ADD R0, SP, #0x138+var_11C
.solo:000668DA BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668DC ADD R0, SP, #0x138+var_110
.solo:000668DE BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668E0 ADD R0, SP, #0x138+var_100
.solo:000668E2 BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668E4 ADD R0, SP, #0x138+var_F0
.solo:000668E6 BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668E8 ADD R0, SP, #0x138+var_E4
.solo:000668EA BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668EC ADD R0, SP, #0x138+var_D8
.solo:000668EE BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668F0 ADD R0, SP, #0x138+var_C8
.solo:000668F2 BLX R5 ; std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::~basic_string()
.solo:000668F4 LDR.W R10, [SP,#0x138+var_134]
.solo:000668F8 B loc_665B4
.solo:000668FA ; ---------------------------------------------------------------------------
.solo:000668FA
.solo:000668FA loc_668FA ; CODE XREF: getAuthString+DE↑j
.solo:000668FA LDR.W R0, [R9]
.solo:000668FE LDR.W R2, [R0,#0x29C]
.solo:00066902 LDR R1, =(aWrongSignature - 0x66908)
.solo:00066904 ADD R1, PC ; "wrong signature"
.solo:00066906 MOV R0, R9
.solo:00066908 BLX R2
.solo:0006690A B loc_665B2
.solo:0006690A ; End of function getAuthString
.solo:0006690A