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

Disassembly:
sub esp, 0x74
push esi
push edi
mov edi, dword [esp + 0x80]
xor esi, esi
test edi, edi
jne 0x40d17b
pop edi
lea eax, [esi - 0x66]
pop esi
add esp, 0x74
ret
mov ecx, dword [edi + 0x58]
add ecx, dword [edi + 0x48]
mov eax, dword [edi + 0x5c]
adc eax, dword [edi + 0x4c]
push 0
push eax
push ecx
push dword [edi + 0x30]
push edi
call fcn.004105c0
add esp, 0x14
test eax, eax
je 0x40d1a0
or esi, 0xffffffff
jmp 0x40d1ca
lea eax, [esp + 0x10]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bfb0
add esp, 0xc
test eax, eax
je 0x40d1ba
or esi, 0xffffffff
jmp 0x40d1ca
cmp dword [esp + 0x10], 0x2014b50
mov eax, 0xffffff99
cmovne esi, eax
push ebx
push ebp
lea eax, [esp + 0x2c]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bf10
or ebx, 0xffffffff
test eax, eax
lea eax, [esp + 0x3c]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x4c]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x5c]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x6c]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bfb0
test eax, eax
lea eax, [esp + 0xa8]
push eax
push 0
push dword [esp + 0x80]
cmovne esi, ebx
call fcn.0040d0e0
add esp, 0x48
lea eax, [esp + 0x40]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bfb0
test eax, eax
lea eax, [esp + 0x1c]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bfb0
test eax, eax
mov dword [esp + 0x60], 0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x5c], eax
cmovne esi, ebx
lea eax, [esp + 0x28]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bfb0
test eax, eax
mov dword [esp + 0x74], 0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x70], eax
cmovne esi, ebx
lea eax, [esp + 0x78]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x88]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x98]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
add esp, 0x48
test eax, eax
lea eax, [esp + 0x60]
cmovne esi, ebx
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x70]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bf10
test eax, eax
lea eax, [esp + 0x80]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bfb0
test eax, eax
lea eax, [esp + 0x34]
push eax
push dword [edi + 0x30]
cmovne esi, ebx
push edi
call fcn.0040bfb0
mov ebp, dword [esp + 0x84]
add esp, 0x30
test eax, eax
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x10]
cmovne esi, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], eax
test esi, esi
jne 0x40d439
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x40d3a3
mov eax, dword [esp + 0x98]
cmp ebp, eax
jae 0x40d375
mov byte [ecx + ebp], 0
mov ebx, ebp
jmp 0x40d377
mov ebx, eax
test ebp, ebp
je 0x40d399
test eax, eax
je 0x40d399
mov eax, dword [edi + 4]
push ebx
push ecx
push dword [edi + 0x30]
push dword [edi + 0x1c]
call eax
add esp, 0x10
cmp eax, ebx
mov eax, 0xffffffff
cmovne esi, eax
sub ebp, ebx
test esi, esi
jne 0x40d439
mov ecx, dword [esp + 0x9c]
test ecx, ecx
je 0x40d439
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x10], ebx
cmp ebx, eax
jb 0x40d3c9
mov dword [esp + 0x10], eax
test ebp, ebp
je 0x40d3f9
push 1
mov eax, ebp
cdq
push edx
push eax
push dword [edi + 0x30]
push edi
call fcn.004105c0
mov ecx, dword [esp + 0xb0]
add esp, 0x14
test eax, eax
mov eax, dword [esp + 0xa0]
jne 0x40d3f6
xor ebp, ebp
jmp 0x40d3f9
or esi, 0xffffffff
test ebx, ebx
je 0x40d42d
test eax, eax
je 0x40d42d
push dword [esp + 0x10]
mov eax, dword [edi + 4]
push ecx
push dword [edi + 0x30]
push dword [edi + 0x1c]
call eax
mov ecx, dword [esp + 0x20]
add esp, 0x10
xor edx, edx
cmp eax, ecx
jne 0x40d422
test edx, edx
je 0x40d431
mov eax, ebx
or esi, 0xffffffff
sub eax, ecx
add ebp, eax
jmp 0x40d43f
mov ecx, dword [esp + 0x10]
mov eax, ebx
sub eax, ecx
add ebp, eax
jmp 0x40d43f
mov ebx, dword [esp + 0x58]
add ebp, ebx
test esi, esi
jne 0x40d697
test ebx, ebx
je 0x40d5a7
sub ebp, ebx
mov dword [esp + 0x18], ebp
je 0x40d479
push 1
mov eax, ebp
cdq
push edx
push eax
push dword [edi + 0x30]
push edi
call fcn.004105c0
add esp, 0x14
test eax, eax
jne 0x40d476
xor ebp, ebp
mov dword [esp + 0x18], ebp
jmp 0x40d479
or esi, 0xffffffff
test ebx, ebx
je 0x40d59f
xor ebp, ebp
lea eax, [esp + 0x1c]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bf10
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
lea eax, [esp + 0x1c]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bf10
add esp, 0x18
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
cmp dword [esp + 0x1c], 1
jne 0x40d56c
cmp dword [esp + 0x4c], eax
jne 0x40d4ed
cmp dword [esp + 0x50], 0
jne 0x40d4ed
lea eax, [esp + 0x4c]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040c0d0
mov ebx, dword [esp + 0x64]
add esp, 0xc
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
cmp dword [esp + 0x44], 0xffffffff
jne 0x40d51a
cmp dword [esp + 0x48], 0
jne 0x40d51a
lea eax, [esp + 0x44]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040c0d0
mov ebx, dword [esp + 0x64]
add esp, 0xc
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
cmp dword [esp + 0x14], 0xffffffff
jne 0x40d54b
cmp dword [esp + 0x28], 0
jne 0x40d54b
lea eax, [esp + 0x24]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040c0d0
add esp, 0xc
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x60], 0xffffffff
jne 0x40d58a
lea eax, [esp + 0x20]
push eax
push dword [edi + 0x30]
push edi
call fcn.0040bfb0
add esp, 0xc
test eax, eax
je 0x40d58a
or esi, 0xffffffff
jmp 0x40d58a
push 1
push 0
push dword [esp + 0x18]
push dword [edi + 0x30]
push edi
call fcn.004105c0
add esp, 0x14
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
mov eax, dword [esp + 0x10]
add eax, 4
add ebp, eax
cmp ebp, ebx
jb 0x40d483
mov ebp, dword [esp + 0x18]
test esi, esi
jne 0x40d697
mov ecx, dword [esp + 0xa4]
test ecx, ecx
je 0x40d633
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0xa8]
cmp ebx, eax
jae 0x40d5cf
mov byte [ebx + ecx], 0
mov dword [esp + 0x18], ebx
jmp 0x40d5d3
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x40d602
push 1
mov eax, ebp
cdq
push edx
push eax
push dword [edi + 0x30]
push edi
call fcn.004105c0
mov ecx, dword [esp + 0xb8]
add esp, 0x14
test eax, eax
mov eax, 0xffffffff
cmovne esi, eax
mov eax, dword [esp + 0xa8]
test ebx, ebx
je 0x40d62f
test eax, eax
je 0x40d62f
mov ebx, dword [esp + 0x18]
mov eax, dword [edi + 4]
push ebx
push ecx
push dword [edi + 0x30]
push dword [edi + 0x1c]
call eax
add esp, 0x10
cmp eax, ebx
je 0x40d62f
pop ebp
pop ebx
or esi, 0xffffffff
pop edi
mov eax, esi
pop esi
add esp, 0x74
ret
test esi, esi
jne 0x40d697
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x40d67f
movdqu xmm0, xmmword [esp + 0x2c]
movdqu xmmword [eax], xmm0
movdqu xmm0, xmmword [esp + 0x3c]
movdqu xmmword [eax + 0x10], xmm0
movdqu xmm0, xmmword [esp + 0x4c]
movdqu xmmword [eax + 0x20], xmm0
movdqu xmm0, xmmword [esp + 0x5c]
movdqu xmmword [eax + 0x30], xmm0
movdqu xmm0, xmmword [esp + 0x6c]
movdqu xmmword [eax + 0x40], xmm0
movq xmm0, qword [esp + 0x7c]
movq qword [eax + 0x50], xmm0
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0x40d697
mov eax, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 4], eax
pop ebp
pop ebx
pop edi
mov eax, esi
pop esi
add esp, 0x74
ret