Function at 0x409c30
Capabilities:
Authenticate hmac
Encode data using base64
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43c0c6
mov eax, dword fs:[0]
push eax
sub esp, 0x748
mov eax, dword [0x45b00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x5ec]
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x130], 0
call fcn.0041da70
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x35c]
call fcn.004020d0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x4f4]
call fcn.004020d0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x4f4]
push 0x445fac
mov dword [ebp - method.CWString.virtual_0], vtable.CWString.0
call fcn.0042a710
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x4c8]
call fcn.004020d0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x4c8]
push str.__td__n
mov dword [ebp - method.CWString.virtual_0], vtable.CWString.0
call fcn.0042a710
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x46c]
call fcn.004020d0
mov byte [ebp - 4], 6
mov dword [ebp - method.CWString.virtual_0], vtable.CVolCommonBaseWithMemManager.0
mov dword [ebp - method.CWString.virtual_0], vtable.CVolObject.0
mov dword [ebp - 0x190], 0
mov dword [ebp - 0x18c], 0
mov byte [ebp - 4], 7
mov dword [ebp - method.CWString.virtual_0], vtable.CVolMem.0
mov dword [ebp - 0x188], 0
mov dword [ebp - 0x180], 0
mov dword [ebp - 0x184], 0
mov dword [ebp - 0x17c], 0x40
mov byte [ebp - 4], 8
mov dword [ebp - method.CWString.virtual_0], vtable.CVolCommonBaseWithMemManager.0
mov dword [ebp - method.CWString.virtual_0], vtable.CVolObject.0
mov dword [ebp - 0x174], 0
mov dword [ebp - 0x170], 0
mov byte [ebp - 4], 9
mov dword [ebp - method.CWString.virtual_0], vtable.CVolMem.0
mov dword [ebp - 0x16c], 0
mov dword [ebp - 0x164], 0
mov dword [ebp - 0x168], 0
mov dword [ebp - 0x160], 0x40
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x440]
call fcn.004020d0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x754]
call fcn.0040e000
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x280]
call fcn.004020d0
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x3e0]
call fcn.004020d0
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x254]
call fcn.004020d0
mov byte [ebp - 4], 0xf
xorps xmm0, xmm0
lea ecx, [ebp - 0x49c]
movsd qword [ebp - 0x1f4], xmm0
call fcn.004020d0
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x49c]
push str.89504E470D0A1A0A0000000D49484452000000C8000000C80806000000AD58AE9E000000017352474200AECE1CE90000200049444154785EED7D09985D4595FF39F7F6EB0E01A59B558120CB280E9B1B38CABEB902320A41C405500C26E9F7AA5E1212C66DDA3F2E10927E55EF85445A84A88028A083800AE380FC65F18F1B8B03C38E040208D29D21A4937EFDEEF9DF83B7679AD0DDEF55DDBAAFDF72EBFBF2895FD73975EA77EFEFD5ADAAB320A42D45204560520430C5264520456072045282A46F478AC01408A404495F8F14819420E93B9022608740BA82D8E1964AB509022941DAE441A7D3B4432025881D6EA9549B209012A44D1E743A4D3B045282D8E1964AB509022941DAE441A7D3B4432025881D6EA9549B209012A48E0F7ACE9C3933BBBABA76F33C6F1622CE02803702805FC5840A003C43446B822058B369D3A62706060636D4D1ECB61E2A2588E3C7DFDBDBBB7B2693D9B752A9ECE379DEEE00308B88980CBB22E2EB1D0DB78E0983886B88E84900781C11FFECFBFE9F972F5FFE174763A46A002025488CD7209FCF6F53A9540EF73CEF2000389888DE86883363A88C2D4A44EB11F11E00B89D886E9F3163C6ADE79F7FFEBAD88ADB54414A10C3072F84781F221E1BBE7CFCBF7B1B8A4F57F7FB00E04644BCBE5028DC3A5D4634E3B82941AA3CB5254B966C3D3C3CFC31CFF33E0C001F0080D735E3831EB39988FE1B00FE0D007E5E2E976F58B972E5FA669E4FD2B6A7049900E1DEDEDE9D3A3A3A4E21A2E310F1C8A41FC274EA27225E59AEF37DFF47CB972F7F613A6D69C4B153828C7B2AF97CFE802008F200301B11338DF8C012B46998882E0B57C8E55AEB07131CA7A954A70401807C3E7F721004021179B39D36809B88A8A4B5BEBEDDC1685B82F09DC4CC99333F07001200F668F71761A2F913D1BDBCA20C0F0FFF706060A0DC8E18B51D41E6CF9FBF6D4747C7220098E7F05EA2D5DF9D678220288E8E8EAE68B74D7DDB10444AB907112D0E2FD54E43C419ADFE4627343FBEA05C1504417FA9547A3EA1311A4A6DCB1364DEBC795B7576767E9D887A11B19A5B47433D9C463526FCA1D980885FEFEEEEBEA0AFAF6FB451ED7461574B1324DA7C171071271760A53A5E8D00113D88886728A5EE6C556C5A92200B172E7CD3E8E8E84588C8177B8DD0D600C0A300F01811FD0511078968303C2018E2FFAE542AFCFF87D6AF5FFF221BBBD5565B6D8388DDBEEFF710510F007423E2D87FEF86887CA8C0FFD8C7AB11DAEA4D9B362D58B56A15CFA9A55ACB11444AB98888CE9DA67DC60344740B22DECF64F03CEFD1FEFEFE87927C6384107B11D19E4C1A767D21A2A31071AF24C79CE4C4EB6F7C22A8B5E6BB9496692D431021C4FE00703922EE5BC7A7733713821D033DCFBBA55028BCB2024C778B4EEA98280703C05100B05FBD6CE29B793E08D15A3F57AF31931CA725082284C8859F203A49A0C67447AE1917777676DEB874E9D297EA3166DC31227FB2633DCFFB3C001C11575F0DF22F0441705AB158FC790D7D1BBA4B5313444AD90D00BCA41F9B24CA44B4368CE7B8C4F7FD81FEFE7EDE4F346DE3E36E00984B447CDCBD7D921321A2C2F0F0F09266BE646C5A8208210E44C49F02C0CE093DE480887EE979DEC0534F3D75FD55575DC5917D2DD3E6CC9993993163C6898838875715444CE45D20A23FF9BE7F42B3FEB024024AD26F9110E26C44FC260074B81E2B3AE3BFD4F7FD0BDA253A8F37FA88780E009C0A009DAE310DDDDDD60541704AB158FC6502BA1355D95404892EFDAE0080E31340E5C5F048558F8C8C945AF1B8B216BCE6CD9BF7864C262311715E12712F44C49EC2ECE6D334AD6908C2311ABEEFFFBBEB283E227A9888FA89E8D252A9B4A9699E5C8286463F445F881C395D7FC25E5BA9543EDE2C58370541F2F9FC7E411030397674F85E709CF657BABBBB2FECEBEB0B1CEA6D1955D96CB6CBF7FDC544F445C7F74ABFF77DFF43CD10A0D5F004C9E7F3870741703D226EE5EACD8B028316B5CA59BD2B5C26D3C3995A3A3A3A2E04800FB91A8B881E0D82E08852A9F4942B9D49E8696882303988E81700B0858BC9B783EF900B9C26D321A5FC67DEA721E2AE8EC679C2F7FD231AF930A4610922A53C8A886E70B5B4B3ABBBD6FA02470FB66DD570A0D9165B6CF195E8D4CB050E7CAF749852EA0917CA5CEB68488244A9756E7234D9359EE71DDFDFDFCFB9A2D2E608815C2E7724225EC34E94715512D1531D1D1D8734E24AD27004C9E7F38706417093A395E357954AE5C452A9C4A96ED2E61881E86491F787EF88AB3ABCD97FBC5C2E1FB472E5CA67E3EA7229DF50041142FC53B8DCDEEC203B219F4AF529A5BE0E00E412B054D7AB11E8EBEBEB1C1C1CE47D091F0BC76A7CE4DED1D17150239D6E350C41B2D9EC3B7CDFE7AC7FB112B3719C45E86E7EB252EA57B19E562A6C848010E25388F80323A1893B731648DE930C39D0155B4543102497CBBD19116F77E03CF74010041F2C168B9CD0396D754620FA91E3BDE376718626A23BD6AD5B77F4EAD5AB37C6D1E34276DA0922A5E41200FFCF4174DC9D954AE583E97EC3C56B61AF2397CB71167BFE4CDED35E0B003B8AF6F4F41C3BDD97B8D34A90D34F3F7D467777F75D0E027A7EA2943A31CE034965DD21C059EFA3FBAB77C7D14A442BB5D6F3E3E8882B3BAD0491527E0700CE8C3989554A2976AE4B5B032110B9A9703842DCDBF78F2AA538D9F6B4B46923881082F3DFFE38CEAC8320F89762B1785E1C1DA96CA208A0949237EE9F8C31CA4BBEEFEF375D7724D34210DE947B9EF72700D8D216B8F0B44A68AD8BB6F2A95CFD1010420C202287FB5A350EBAD25ABFD34A38A650DD09C2E7E64343437703C03FDA
mov dword [ebp - method.CWString.virtual_0], vtable.CWString.0
call fcn.0042a710
mov byte [ebp - 4], 0x11
push 0x445d2c
jmp 0x40adab
je 0x45dd2c
lea ecx, [ebp - 0x194]
jmp fcn.0045dd2a
lea esp, [esp + 4]
lea edx, [ebp - 0x49c]
movsx ecx, ax
movzx ecx, di
lea ecx, [ebp - 0x10c]
jmp 0x40ae23
call fcn.00404740
mov esi, eax
mov byte [ebp - 4], 0x12
bts cx, sp
bts edx, edx
not dh
mov ecx, dword [ebp - 0x194]
or edx, ebx
mov edx, dword [ecx + 0x44]
cmc
cmp di, 0x1297
cmp edx, fcn.00401b70
jmp 0x40a6c1
push esi
lea ecx, [ebp - 0x194]
jmp 0x45efb3
mov dword [ebp - method.CWString.virtual_0], vtable.CVolMem.0
test ax, si
mov byte [ebp - 4], 0x13
shl cl, cl
stc
shr cl, cl
mov ecx, dword [ebp - 0x100]
test eax, ebp
test ecx, ecx
jmp loc.00408c4d
call fcn.00402f40
mov byte [ebp - 4], 0x11
jmp 0x45dfe6