Function at 0x40c520
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x280
mov esi, esp
mov dword [esi + 0x268], ebp
mov dword [esi + 0x26c], esp
mov dword [esi + 0x278], 0xffffffff
mov dword [esi + 0x274], 0x41bac0
mov dword [esi + 0x174], ecx
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x24]
mov ebx, dword [ebp + 0x28]
mov dword [esi + 0x34], edx
mov eax, dword fs:[0]
mov dword [esi + 0x270], eax
lea eax, [esi + 0x270]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [esi + 0x178], edx
mov dword [esi + 0x180], ecx
mov edx, dword [ebp + 0xc]
lea ecx, [esi + 0x98]
mov dword [esi + 0x17c], eax
mov eax, dword [ebp + 0x18]
mov dword [esi + 0x184], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x188], eax
mov eax, dword [ebp + 0x20]
mov dword [esi + 0x18c], eax
mov eax, dword [ebp + 0x10]
push ebx
push edi
push eax
call fcn.0040aa00
add esp, 0xc
mov edi, dword [esi + 0x98]
mov eax, dword [esi + 0x9c]
mov ebx, dword [esi + 0xa0]
test edi, edi
je 0x40c773
mov dword [esi + 0x54], 1
mov dword [esi + 0x58], 0
mov dword [esi + 0x1c], eax
mov dword [esi + 0x5c], 0
push 1
push 0x8000
call fcn.00452e70
add esp, 8
test eax, eax
mov dword [esi + 0x94], edi
je 0x40d1b7
mov dword [esi + 0x68], edi
mov dword [esi + 0x6c], ebx
mov dword [esi + 0x70], eax
lea eax, [esi + 0x68]
mov dword [esi + 0x74], 0x8000
mov dword [esi + 0x78], 0
mov dword [esi + 0x7c], 0
mov dword [esi + 0x278], 0
push eax
lea eax, [esi + 0x98]
push eax
call fcn.0044dc70
add esp, 8
lea edi, [esi + 0x190]
push 0xd8
lea eax, [esi + 0x98]
push eax
push edi
call fcn.005885b0
add esp, 0xc
mov dword [esi + 0x278], 0xb
sub esp, 4
lea eax, [esi + 0x54]
lea ecx, [esi + 0x20]
push 0
push eax
push edi
push ecx
call fcn.0044f900
add esp, 0x14
cmp byte [esi + 0x20], 4
jne 0x40c77d
lea ecx, [esi + 0x190]
mov dword [esi + 0x278], 0
call fcn.00405a90
push 4
push 0x5b2da1
push dword [ebp + 8]
push dword [esi + 0x34]
lea eax, [esi + 0x68]
push eax
call fcn.0051d840
add esp, 0x14
lea eax, [esi + 0x98]
mov dword [esi + 0x278], 1
push eax
call fcn.005162b0
add esp, 4
push 1
lea eax, [esi + 0x98]
push eax
call fcn.005162f0
add esp, 8
push 1
push eax
call fcn.00516320
add esp, 8
push 1
push eax
call fcn.00516310
add esp, 8
mov dword [esi + 4], eax
lea eax, [esi + 0x68]
push eax
call fcn.00525d50
add esp, 4
lea ecx, [esi + 0x10]
push edx
push eax
push dword [esi + 4]
push ecx
call fcn.00516330
add esp, 0x10
cmp byte [esi + 0x10], 4
jne 0x40c8b2
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x5c]
mov ecx, dword [esi + 0x54]
mov dword [esi + 0x278], 0xa
mov dword [esi + 0x98], eax
lea eax, [esi + 0x38]
push edx
push ecx
lea ecx, [esi + 0x98]
push ecx
push eax
call fcn.00447750
add esp, 0x10
mov eax, dword [esi + 0x98]
mov dword [esi + 0x278], 1
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
jmp 0x40c8be
mov dword [esi + 4], ebx
mov ebx, eax
jmp 0x40cd73
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x24]
mov byte [esi + 0xb], 1
mov dword [esi + 0x278], 0xc
mov dword [esi + 4], eax
mov dword [esi + 0x10], eax
lea eax, [esi + 0x68]
mov dword [esi + 0x34], ecx
mov dword [esi + 0x14], ecx
push eax
call fcn.005033d0
add esp, 4
mov eax, dword [esi + 0x80]
movsd xmm0, qword [esi + 0x78]
movsd xmm1, qword [esi + 0x70]
mov dword [esi + 0xb0], eax
movsd qword [esi + 0xa8], xmm0
movq xmm0, qword [esi + 0x68]
mov eax, dword [esi + 4]
movsd qword [esi + 0xa0], xmm1
movq qword [esi + 0x98], xmm0
mov dword [esi + 0xb4], eax
mov eax, dword [esi + 0x34]
mov dword [esi + 0xb8], eax
movzx eax, byte [0x636fbd]
push 4
push 0x24
call fcn.00452e20
add esp, 8
test eax, eax
je 0x40d1d2
movsd xmm1, qword [esi + 0xa8]
mov ecx, dword [esi + 0xb8]
movq xmm0, qword [esi + 0xb0]
movsd xmm2, qword [esi + 0x98]
mov dword [esi + 0x278], 0xb
movsd qword [eax + 0x10], xmm1
movsd xmm1, qword [esi + 0xa0]
mov dword [esi + 0xa0], 0x5b4d90
mov dword [esi + 0xb4], str.error_reading_server_response.upderror_writing
mov dword [esi + 0xb8], 0x1d
mov dword [esi + 0x98], 2
mov dword [eax + 0x20], ecx
movq qword [eax + 0x18], xmm0
movsd qword [eax], xmm2
mov dword [esi + 0x9c], eax
movsd qword [eax + 8], xmm1
lea eax, [esi + 0x98]
push eax
call fcn.00429ed0
add esp, 4
mov dword [esi + 0x2c], eax
mov dword [esi + 4], edx
lea ecx, [esi + 0x190]
mov dword [esi + 0x278], 0
call fcn.00405a90
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 0x2c]
jmp 0x40cd49
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x3c], ecx
mov dword [esi + 0x38], eax
lea eax, [esi + 0x68]
mov dword [esi + 0x98], 0x5b2db4
mov dword [esi + 0x9c], 1
mov dword [esi + 0xa8], 0
mov byte [esi + 0xc], 1
mov dword [esi + 0x278], 9
mov dword [esi + 0x84], eax
lea eax, [esi + 0x84]
mov dword [esi + 0x20], eax
lea eax, [esi + 0x20]
mov dword [esi + 0x24], 0x41fbb0
mov dword [esi + 0xa0], eax
lea eax, [esi + 0x98]
mov dword [esi + 0xa4], 1
push eax
lea eax, [esi + 0x10]
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x10]
movq xmm0, qword [esi + 0x14]
cmp byte [esi + 0x38], 4
jne 0x40c954
movd ecx, xmm0
test ecx, ecx
je 0x40c9dc
push 1
push ecx
push eax
call fcn.00452e30
add esp, 0xc
jmp 0x40c9dc
movsd xmm1, qword [esi + 0x38]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x20]
movq qword [esi + 0x14], xmm0
mov byte [esi + 0xc], 0
movsd qword [esi + 0x20], xmm1
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x98]
push eax
call fcn.0044a0d0
add esp, 0xc
movsd xmm1, qword [esi + 0xa4]
mov eax, dword [esi + 0x98]
movq xmm0, qword [esi + 0x9c]
movsd xmm2, qword [esi + 0xac]
mov ecx, dword [esi + 0xbc]
movsd qword [esi + 0x198], xmm1
movsd xmm1, qword [esi + 0xb4]
cmp eax, 3
movq qword [esi + 0x190], xmm0
movsd qword [esi + 0x1a0], xmm2
mov dword [esi + 0x1b0], ecx
movsd qword [esi + 0x1a8], xmm1
jne 0x40cc9e
lea eax, [esi + 0x68]
mov dword [esi + 0x278], 1
push eax
call fcn.00525d50
add esp, 4
mov edi, edx
lea ecx, [esi + 0x98]
mov edx, eax
push edi
call fcn.00406870
add esp, 4
mov ecx, dword [esi + 0x98]
mov eax, dword [esi + 0xa0]
mov ebx, dword [esi + 0x9c]
test ecx, ecx
mov dword [esi + 4], eax
je 0x40cd0e
mov dword [esi + 0x84], ecx
mov dword [esi + 0x88], ebx
mov dword [esi + 0x8c], eax
lea eax, [esi + 0x68]
mov dword [esi + 0x60], ebx
mov dword [esi + 0x64], ecx
mov dword [esi + 0x278], 2
push eax
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x50], ecx
call fcn.00525d50
add esp, 4
mov ecx, dword [esi + 0x2c]
mov edi, edx
mov edx, eax
mov dword [esi + 0x60], ecx
mov ecx, dword [esi + 0x50]
mov dword [esi + 0x64], ecx
lea ecx, [esi + 0x98]
push edi
call fcn.00407140
add esp, 4
mov eax, dword [esi + 0x98]
mov ebx, dword [esi + 0x9c]
mov edi, dword [esi + 0xa0]
test eax, eax
je 0x40cd13
mov dword [esi + 0x38], eax
mov dword [esi + 0x90], eax
mov eax, dword [ebp + 0x18]
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x4c], ebx
mov dword [esi + 0x40], edi
cmp dword [esi + 4], eax
jne 0x40cac0
push eax
push dword [ebp + 0x14]
push dword [esi + 0x50]
call fcn.00588c8a
add esp, 0xc
test eax, eax
je 0x40cd8c
lea eax, [esi + 0x178]
mov dword [esi + str.invalid_hash_for_____], 0x5b2dd4
mov dword [esi + 0x194], 3
mov dword [esi + 0x1a0], 0
mov dword [esi + 0x278], 3
mov dword [esi + 0x30], eax
lea eax, [esi + 0x84]
mov dword [esi + 0x44], eax
lea eax, [esi + 0x180]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x30]
mov dword [esi + 0x98], eax
lea eax, [esi + 0x44]
mov dword [esi + 0x9c], 0x41fc40
mov dword [esi + 0xa0], eax
lea eax, [esi + 0x10]
mov dword [esi + 0xa4], 0x450080
mov dword [esi + 0xa8], eax
lea eax, [esi + 0x98]
mov dword [esi + 0xac], 0x41fcf0
mov dword [esi + 0x198], eax
lea eax, [esi + 0x190]
mov dword [esi + 0x19c], 3
push eax
lea eax, [esi + 0x20]
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x28]
movq xmm0, qword [esi + 0x20]
mov byte [esi + 0xd], 1
mov dword [esi + 0x278], 6
mov dword [esi + 0x18], eax
lea eax, [esi + 0x98]
movq qword [esi + 0x10], xmm0
push eax
call fcn.005033d0
add esp, 4
mov eax, dword [esi + 0x18]
movsd xmm0, qword [esi + 0x10]
movsd xmm1, qword [esi + 0xa0]
movsd xmm2, qword [esi + 0xa8]
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0xb0]
movsd qword [esi + 0x1ac], xmm0
movq xmm0, qword [esi + 0x98]
movsd qword [esi + 0x198], xmm1
movsd qword [esi + 0x1a0], xmm2
movsd qword [esi + 0xa8], xmm2
movsd qword [esi + 0xa0], xmm1
movsd xmm3, qword [esi + 0x1b0]
mov dword [esi + 0x1a8], eax
movq qword [esi + 0x190], xmm0
movq qword [esi + 0x98], xmm0
movsd xmm4, qword [esi + 0x1a8]
movsd qword [esi + 0xb8], xmm3
movsd qword [esi + 0xb0], xmm4
movzx eax, byte [0x636fbd]
push 4
push 0x28
call fcn.00452e20
add esp, 8
test eax, eax
je 0x40d1ea
movsd xmm2, qword [esi + 0x1a8]
movsd xmm1, qword [esi + 0x1a0]
movq xmm0, qword [esi + 0x1b0]
mov edi, dword [esi + 0x1c]
mov ebx, eax
mov dword [esi + 4], 0x5b4f0c
movsd qword [eax + 0x18], xmm2
movsd qword [eax + 0x10], xmm1
movsd xmm2, qword [esi + 0x190]
movsd xmm1, qword [esi + 0x198]
movq qword [eax + 0x20], xmm0
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm2
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x40cd19
push 1
push eax
push dword [esi + 0x38]
call fcn.00452e30
add esp, 0xc
jmp 0x40cd19
movsd xmm1, qword [esi + 0x1a0]
mov ecx, dword [esi + 0x1b0]
movq xmm0, qword [esi + 0x1a8]
movsd xmm2, qword [esi + 0x190]
mov dword [esi + 0x278], 1
movsd qword [esi + 0xac], xmm1
movsd xmm1, qword [esi + 0x198]
mov dword [esi + 0xbc], ecx
movq qword [esi + 0xb4], xmm0
movsd qword [esi + 0x9c], xmm2
movsd qword [esi + 0xa4], xmm1
mov dword [esi + 0x98], eax
lea eax, [esi + 0x98]
push eax
call fcn.00429d60
add esp, 4
mov dword [esi + 4], edx
mov ebx, eax
mov edi, dword [esi + 0x1c]
jmp 0x40cd34
mov dword [esi + 4], edi
mov edi, dword [esi + 0x1c]
mov eax, dword [esi + 0x88]
test eax, eax
je 0x40cd34
push 1
push eax
push dword [esi + 0x84]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x40cd49
push 1
push eax
push dword [esi + 0x68]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x58]
test eax, eax
je 0x40cd5e
push 1
push eax
push dword [esi + 0x54]
call fcn.00452e30
add esp, 0xc
test edi, edi
je 0x40cd73
push 1
push edi
push dword [esi + 0x94]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x270]
mov edx, dword [esi + 4]
mov dword fs:[0], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp byte [esi + 0x174], 0
lea ebx, [esi + 0x98]
je 0x40cf8a
cmp edi, dword [ebp + 0x20]
jne 0x40cdc0
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [esi + 0x90]
call fcn.00588c8a
add esp, 0xc
test eax, eax
je 0x40cf8a
lea eax, [esi + 0x178]
mov dword [esi + str.invalid_hash_for_____], 0x5b2dd4
mov dword [esi + 0x194], 3
mov dword [esi + 0x1a0], 0
mov dword [esi + 0x198], ebx
mov dword [esi + 0x19c], 3
mov dword [esi + 0x278], 3
mov dword [esi + 0x30], eax
lea eax, [esi + 0x38]
mov dword [esi + 0x44], eax
lea eax, [esi + 0x188]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x30]
mov dword [esi + 0x98], eax
lea eax, [esi + 0x44]
mov dword [esi + 0x9c], 0x41fc40
mov dword [esi + 0xa0], eax
lea eax, [esi + 0x10]
mov dword [esi + 0xa4], 0x450080
mov dword [esi + 0xa8], eax
lea eax, [esi + 0x190]
mov dword [esi + 0xac], 0x41fcf0
push eax
lea eax, [esi + 0x20]
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x28]
movq xmm0, qword [esi + 0x20]
mov byte [esi + 0xe], 1
mov dword [esi + 0x278], 4
mov dword [esi + 0x18], eax
lea eax, [esi + 0x98]
movq qword [esi + 0x10], xmm0
push eax
call fcn.005033d0
add esp, 4
mov eax, dword [esi + 0x18]
movsd xmm0, qword [esi + 0x10]
movsd xmm1, qword [esi + 0xa0]
movsd xmm2, qword [esi + 0xa8]
mov dword [esi + 0x1b4], eax
mov eax, dword [esi + 0xb0]
movsd qword [esi + 0x1ac], xmm0
movq xmm0, qword [esi + 0x98]
movsd qword [esi + 0x198], xmm1
movsd qword [esi + 0x1a0], xmm2
movsd qword [esi + 0xa8], xmm2
movsd qword [esi + 0xa0], xmm1
movsd xmm3, qword [esi + 0x1b0]
mov dword [esi + 0x1a8], eax
movq qword [esi + 0x190], xmm0
movq qword [esi + 0x98], xmm0
movsd xmm4, qword [esi + 0x1a8]
movsd qword [esi + 0xb8], xmm3
movsd qword [esi + 0xb0], xmm4
movzx eax, byte [0x636fbd]
push 4
push 0x28
call fcn.00452e20
add esp, 8
test eax, eax
je 0x40d202
movsd xmm2, qword [esi + 0x1a8]
movsd xmm1, qword [esi + 0x1a0]
movq xmm0, qword [esi + 0x1b0]
mov ebx, eax
mov edi, dword [esi + 0x1c]
mov dword [esi + 4], 0x5b4f0c
movsd qword [eax + 0x18], xmm2
movsd qword [eax + 0x10], xmm1
movsd xmm2, qword [esi + 0x190]
movsd xmm1, qword [esi + 0x198]
movq qword [eax + 0x20], xmm0
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm2
mov eax, dword [esi + 0x3c]
test eax, eax
jne 0x40cc8e
jmp 0x40cd19
lea eax, [esi + 0x68]
mov dword [esi + 0x278], 3
push eax
call fcn.00525d50
add esp, 4
lea ecx, [esi + 0x44]
push dword [ebp + 8]
push dword [esi + 0x34]
push edx
push eax
push ecx
call fcn.00523fd0
add esp, 0x14
lea eax, [esi + 0x68]
mov dword [esi + 0x98], 0x5b2dfc
mov dword [esi + 0x9c], 1
mov dword [esi + 0xa8], 0
mov byte [esi + 0xf], 1
mov dword [esi + 0x278], 8
mov dword [esi + 0x30], eax
lea eax, [esi + 0x30]
mov dword [esi + 0x20], eax
lea eax, [esi + 0x20]
mov dword [esi + 0x24], 0x41fbb0
mov dword [esi + 0xa0], eax
lea eax, [esi + 0x98]
mov dword [esi + 0xa4], 1
push eax
lea eax, [esi + 0x10]
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x10]
movq xmm0, qword [esi + 0x14]
cmp byte [esi + 0x44], 4
jne 0x40d047
mov ebx, dword [esi + 0x2c]
movd ecx, xmm0
test ecx, ecx
je 0x40d0ce
push 1
push ecx
push eax
call fcn.00452e30
add esp, 0xc
jmp 0x40d0ce
movsd xmm1, qword [esi + 0x44]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x20]
movq qword [esi + 0x14], xmm0
mov byte [esi + 0xf], 0
movsd qword [esi + 0x20], xmm1
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x98]
push eax
call fcn.0044a0d0
add esp, 0xc
movsd xmm1, qword [esi + 0xa4]
mov eax, dword [esi + 0x98]
movq xmm0, qword [esi + 0x9c]
movsd xmm2, qword [esi + 0xac]
mov ecx, dword [esi + 0xbc]
mov ebx, dword [esi + 0x2c]
movsd qword [esi + 0x198], xmm1
movsd xmm1, qword [esi + 0xb4]
cmp eax, 3
movq qword [esi + 0x190], xmm0
movsd qword [esi + 0x1a0], xmm2
mov dword [esi + 0x1b0], ecx
movsd qword [esi + 0x1a8], xmm1
jne 0x40d134
mov eax, dword [esi + 0x4c]
mov edi, dword [esi + 0x1c]
test eax, eax
je 0x40d0e9
push 1
push eax
push dword [esi + 0x90]
call fcn.00452e30
add esp, 0xc
test ebx, ebx
je 0x40d0fb
push 1
push ebx
push dword [esi + 0x50]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x40d110
push 1
push eax
push dword [esi + 0x68]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x58]
test eax, eax
je 0x40d125
push 1
push eax
push dword [esi + 0x54]
call fcn.00452e30
add esp, 0xc
xor ebx, ebx
test edi, edi
jne 0x40cd62
jmp 0x40cd73
movsd xmm1, qword [esi + 0x1a0]
mov ecx, dword [esi + 0x1b0]
movq xmm0, qword [esi + 0x1a8]
movsd xmm2, qword [esi + 0x190]
mov dword [esi + 0x278], 3
movsd qword [esi + 0xac], xmm1
movsd xmm1, qword [esi + 0x198]
mov dword [esi + 0xbc], ecx
movq qword [esi + 0xb4], xmm0
movsd qword [esi + 0x9c], xmm2
movsd qword [esi + 0xa4], xmm1
mov dword [esi + 0x98], eax
lea eax, [esi + 0x98]
push eax
call fcn.00429d60
add esp, 4
mov dword [esi + 4], edx
mov edi, dword [esi + 0x1c]
mov ebx, eax
mov eax, dword [esi + 0x4c]
test eax, eax
jne 0x40cc8e
jmp 0x40cd19
mov dword [esi + 0x278], 0
push 0x8000
push 1
call fcn.005b14d0
add esp, 8
jmp 0x40d218
mov dword [esi + 0x278], 0xd
push 0x24
push 4
call fcn.005b14d0
add esp, 8
jmp 0x40d218
mov dword [esi + 0x278], 7
push 0x28
push 4
call fcn.005b14d0
add esp, 8
jmp 0x40d218
mov dword [esi + 0x278], 5
push 0x28
push 4
call fcn.005b14d0
add esp, 8
ud2