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

Disassembly:
push 0xffffffffffffffff
push 0x43f246
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xa4
mov eax, dword [0x458e40]
push ebx
push ebp
mov dword [esp + 0xa8], eax
mov ebx, ecx
xor eax, eax
push esi
push edi
mov dword [esp + 0x14], ebx
mov dword [ebx + 0x2288], 0xffffffff
mov dword [esp + 0x90], 0xf
mov dword [esp + 0x8c], eax
mov byte [esp + 0x7c], al
mov ecx, dword [esp + 0xc4]
imul ecx, ecx, 0x1f72c
mov dword [esp + 0xbc], eax
mov eax, dword [ebx + 0x201c]
mov dword [ebx + 0x2020], eax
mov edx, dword [ecx + ebx + 0x3874]
lea edi, [ecx + ebx]
add edx, eax
mov dword [ebx + 0x2020], edx
mov eax, dword [edi + 0x3878]
lea esi, [ebx + 0x202c]
mov dword [ebx], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x10
mov dword [esp + 0x1c], edi
lea edx, [esi + 4]
jb 0x4041b6
mov ebp, dword [edx]
jmp 0x4041b8
mov ebp, edx
mov ecx, dword [esi + 0x14]
add ecx, ebp
cmp eax, 0x10
jb 0x4041c4
mov edx, dword [edx]
push ecx
push edx
lea ecx, [esp + 0x20]
push ecx
mov ecx, esi
call fcn.004026f0
lea ecx, [edi + 0x12a7c]
mov eax, ecx
lea edi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4041e0
sub eax, edi
push eax
push ecx
mov ecx, esi
call fcn.00403270
mov esi, dword [esp + 0x1c]
lea eax, [esi + 0x387c]
lea ecx, [ebx + 0x2290]
sub ecx, eax
mov dl, byte [eax]
mov byte [ecx + eax], dl
inc eax
test dl, dl
jne 0x404204
lea eax, [esi + 0x407c]
mov edx, ebx
sub edx, eax
add edx, 0x2a90
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x404220
call fcn.00421230
mov ecx, eax
call fcn.00421340
lea ebp, [ebx + 0x3804]
mov ecx, ebp
call fcn.00403a70
lea ecx, [esi + 0x12770]
mov eax, ecx
lea esi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404250
sub eax, esi
mov dword [esp + 0x18], eax
je 0x404336
mov eax, ecx
mov dword [esp + 0xac], 0xf
mov dword [esp + 0xa8], 0
mov byte [esp + 0x98], dl
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404285
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x9c]
call fcn.00403270
mov esi, dword [ebp + 4]
mov ecx, dword [esi + 4]
lea eax, [esp + 0x94]
push eax
push ecx
push esi
mov ecx, ebp
mov byte [esp + 0xc8], 1
call fcn.00403790
push 1
mov ecx, ebp
mov edi, eax
call fcn.00403830
mov dword [esi + 4], edi
mov eax, dword [edi + 4]
mov dword [eax], edi
cmp dword [esp + 0xac], 0x10
mov byte [esp + 0xbc], 0
jb 0x4042f0
mov edx, dword [esp + 0x98]
push edx
call fcn.00433080
add esp, 4
mov eax, dword [ebx + 0x3808]
mov eax, dword [eax]
push 1
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x38], esp
push 0xffffffffffffffff
add eax, 8
push 0
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
push eax
mov byte [ecx + 4], 0
call fcn.00402a50
mov byte [esp + 0xdc], 0
call fcn.00421230
mov ecx, eax
call fcn.004213e0
mov eax, 0xf
xor edi, edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edi
mov byte [esp + 0x28], 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edi
mov byte [esp + 0x4c], 0
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 0x11d90]
lea ebp, [ebx + 0x3290]
mov ecx, ebp
mov byte [esp + 0xbc], 3
call fcn.00403a70
cmp esi, edi
jle 0x404438
mov ebx, dword [esp + 0x1c]
add ebx, 0x11eac
mov dword [esp + 0x10], esi
lea esp, [esp]
mov edx, dword [esp + 0x90]
cmp edx, 0x10
mov edi, dword [esp + 0x7c]
mov eax, edi
jae 0x4043a6
lea eax, [esp + 0x7c]
mov ecx, dword [esp + 0x8c]
add ecx, eax
cmp edx, 0x10
mov esi, edi
jae 0x4043c4
lea esi, [esp + 0x7c]
mov edx, esi
test esi, esi
jne 0x4043c8
xor eax, eax
jmp 0x4043cc
mov edx, edi
jmp 0x4043bc
mov eax, esi
sub eax, edx
test ecx, ecx
je 0x4043d2
sub ecx, esi
push ecx
push eax
lea ecx, [esp + 0x80]
call fcn.00402500
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4043e5
sub eax, edx
push eax
push ebx
lea ecx, [esp + 0x80]
call fcn.00403270
mov esi, dword [ebp + 4]
mov eax, dword [esi + 4]
lea edx, [esp + 0x78]
push edx
push eax
push esi
mov ecx, ebp
call fcn.00403790
push 1
mov ecx, ebp
mov edi, eax
call fcn.00403830
mov eax, dword [esp + 0x10]
mov dword [esi + 4], edi
mov ecx, dword [edi + 4]
add ebx, 0x118
dec eax
mov dword [ecx], edi
mov dword [esp + 0x10], eax
jne 0x404390
mov ebx, dword [esp + 0x1c]
lea edx, [ebx + 0x11d94]
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404447
mov edi, dword [esp + 0x14]
sub eax, esi
push eax
push edx
lea ecx, [edi + 0x329c]
call fcn.00403270
mov edx, dword [edi + 0x37b8]
or edx, dword [edi + 0x37b4]
jne 0x404480
mov eax, dword [edi + 0x32b0]
test eax, eax
jne 0x404480
mov byte [edi + 0x2290], 0
mov eax, dword [edi + 0x37fc]
mov esi, dword [eax]
mov ebx, dword [ebx + 0x487c]
mov dword [eax], eax
mov eax, dword [edi + 0x37fc]
mov dword [eax + 4], eax
cmp esi, dword [edi + 0x37fc]
mov dword [edi + 0x3800], 0
mov ebp, 0xf
je 0x404514
cmp dword [esi + 0x44], 0x10
mov edi, dword [esi]
jb 0x4044c4
mov eax, dword [esi + 0x30]
push eax
call fcn.00433080
add esp, 4
mov dword [esi + 0x44], ebp
mov dword [esi + 0x40], 0
mov byte [esi + 0x30], 0
cmp dword [esi + 0x20], 0x10
jb 0x4044e4
mov ecx, dword [esi + 0xc]
push ecx
call fcn.00433080
add esp, 4
mov dword [esi + 0x20], ebp
mov dword [esi + 0x1c], 0
push esi
mov byte [esi + 0xc], 0
call fcn.00433080
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x37fc]
add eax, 0x37f8
add esp, 4
cmp edi, ecx
mov esi, edi
jne 0x4044b0
mov edi, dword [esp + 0x14]
mov eax, dword [edi + 0x37f0]
mov esi, dword [eax]
lea ecx, [edi + 0x37ec]
mov dword [eax], eax
mov eax, dword [ecx + 4]
mov dword [eax + 4], eax
cmp esi, dword [ecx + 4]
mov dword [ecx + 8], 0
je 0x404596
cmp dword [esi + 0x44], 0x10
mov edi, dword [esi]
jb 0x40454a
mov edx, dword [esi + 0x30]
push edx
call fcn.00433080
add esp, 4
mov dword [esi + 0x44], ebp
mov dword [esi + 0x40], 0
mov byte [esi + 0x30], 0
cmp dword [esi + 0x20], 0x10
jb 0x40456a
mov eax, dword [esi + 0xc]
push eax
call fcn.00433080
add esp, 4
mov dword [esi + 0x20], ebp
mov dword [esi + 0x1c], 0
push esi
mov byte [esi + 0xc], 0
call fcn.00433080
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x37f0]
add eax, 0x37ec
add esp, 4
cmp edi, ecx
mov esi, edi
jne 0x404536
test ebx, ebx
jle 0x4047dc
mov ecx, dword [esp + 0x1c]
add ecx, 0x4a94
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov ebp, dword [esp + 0x3c]
cmp ebp, 0x10
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x74], edx
mov edx, dword [eax - 4]
mov dword [esp + 0x70], ecx
mov ecx, dword [eax - 0x114]
mov dword [esp + 0x6c], edx
mov edx, dword [eax - 0x110]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax - 0xc]
mov dword [esp + 0x44], edx
mov edx, dword [eax - 8]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
mov ecx, ebx
jae 0x4045fd
lea ecx, [esp + 0x28]
cmp ebp, 0x10
mov eax, dword [esp + 0x38]
lea esi, [eax + ecx]
mov ecx, ebx
jae 0x404619
lea ecx, [esp + 0x28]
mov edx, ecx
test ecx, ecx
jne 0x40461d
xor edi, edi
jmp 0x404621
mov edx, ebx
jmp 0x404611
mov edi, ecx
sub edi, edx
test esi, esi
je 0x404627
sub esi, ecx
cmp eax, edi
jae 0x404640
lea ecx, [esp + 0x24]
call fcn.004255e5
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x3c]
mov ecx, eax
sub ecx, edi
cmp ecx, esi
jae 0x40464a
mov esi, ecx
test esi, esi
jbe 0x404694
cmp ebp, 0x10
mov edx, ebx
jae 0x4046e6
lea edx, [esp + 0x28]
mov ecx, edx
sub eax, esi
sub eax, edi
push eax
lea eax, [esi + edi]
add eax, edx
push eax
add edi, ecx
push edi
call fcn.00433310
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
sub eax, esi
add esp, 0xc
cmp ecx, 0x10
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], eax
jae 0x404690
lea ecx, [esp + 0x28]
mov byte [eax + ecx], 0
mov edx, dword [esp + 0x10]
add edx, 0xfffffdec
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4046a3
sub eax, esi
push eax
push edx
lea ecx, [esp + 0x2c]
call fcn.00403270
mov ebp, dword [esp + 0x60]
cmp ebp, 0x10
mov ebx, dword [esp + 0x4c]
mov ecx, ebx
jae 0x4046ca
lea ecx, [esp + 0x4c]
cmp ebp, 0x10
mov eax, dword [esp + 0x5c]
lea esi, [eax + ecx]
mov ecx, ebx
jae 0x4046ed
lea ecx, [esp + 0x4c]
mov edx, ecx
test ecx, ecx
jne 0x4046f1
xor edi, edi
jmp 0x4046f5
mov ecx, ebx
jmp 0x40465f
mov edx, ebx
jmp 0x4046de
mov edi, ecx
sub edi, edx
test esi, esi
je 0x4046fb
sub esi, ecx
cmp eax, edi
jae 0x404714
lea ecx, [esp + 0x48]
call fcn.004255e5
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x60]
mov ecx, eax
sub ecx, edi
cmp ecx, esi
jae 0x40471e
mov esi, ecx
test esi, esi
jbe 0x404768
cmp ebp, 0x10
mov edx, ebx
jae 0x404a2a
lea edx, [esp + 0x4c]
mov ecx, edx
sub eax, esi
sub eax, edi
push eax
lea eax, [esi + edi]
add eax, edx
push eax
add edi, ecx
push edi
call fcn.00433310
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
sub eax, esi
add esp, 0xc
cmp ecx, 0x10
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x5c], eax
jae 0x404764
lea ecx, [esp + 0x4c]
mov byte [eax + ecx], 0
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffef4
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404777
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x50]
call fcn.00403270
mov ebp, dword [esp + 0x14]
mov esi, dword [ebp + 0x37fc]
mov edx, dword [esi + 4]
add ebp, 0x37f8
lea ecx, [esp + 0x24]
push ecx
push edx
push esi
mov ecx, ebp
call fcn.00403b70
push 1
mov ecx, ebp
mov edi, eax
call fcn.00403970
mov ecx, dword [esp + 0x10]
mov dword [esi + 4], edi
mov eax, dword [edi + 4]
mov dword [eax], edi
mov eax, dword [esp + 0x18]
add ecx, 0x21c
dec eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
jne 0x4045b0
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x11b70]
test eax, eax
jle 0x4048a8
mov ecx, dword [edi + 0x11d8c]
mov eax, dword [edi + 0x11d84]
mov edx, dword [edi + 0x11d88]
mov dword [esp + 0x74], ecx
mov ecx, dword [edi + 0x11c74]
mov dword [esp + 0x40], ecx
mov ecx, dword [edi + 0x11d80]
mov dword [esp + 0x6c], eax
mov eax, dword [edi + 0x11d7c]
mov dword [esp + 0x68], ecx
lea ecx, [edi + 0x11b74]
mov dword [esp + 0x70], edx
mov edx, dword [edi + 0x11c78]
mov dword [esp + 0x64], eax
mov eax, ecx
mov dword [esp + 0x44], edx
lea esi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404840
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x2c]
call fcn.00403270
lea ecx, [edi + 0x11c7c]
mov eax, ecx
lea esi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404860
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x50]
call fcn.00403270
mov ebx, dword [esp + 0x14]
mov esi, dword [ebx + 0x37f0]
mov eax, dword [esi + 4]
add ebx, 0x37ec
lea edx, [esp + 0x24]
push edx
push eax
push esi
mov ecx, ebx
call fcn.00403b70
push 1
mov ecx, ebx
mov edi, eax
call fcn.00403970
mov dword [esi + 4], edi
mov ecx, dword [edi + 4]
mov dword [ecx], edi
mov ebp, dword [esp + 0x14]
mov ecx, dword [ebp + 0x32c8]
mov eax, dword [ecx]
add ebp, 0x32c4
mov dword [ecx], ecx
mov ecx, dword [ebp + 4]
mov dword [ecx + 4], ecx
cmp eax, dword [ebp + 4]
mov dword [ebp + 8], 0
je 0x4048e4
mov edi, edi
mov esi, dword [eax]
push eax
call fcn.00433080
mov ecx, dword [ebp + 4]
add esp, 4
cmp esi, ecx
mov eax, esi
jne 0x4048d0
mov edi, dword [esp + 0x14]
mov edx, dword [edi + 0x32d4]
mov ebx, dword [edx + 4]
mov al, byte [ebx + 0x11]
add edi, 0x32d0
test al, al
mov esi, ebx
jne 0x40491f
mov eax, dword [esi + 8]
push eax
mov ecx, edi
call fcn.00403150
mov esi, dword [esi]
push ebx
call fcn.00433080
mov al, byte [esi + 0x11]
add esp, 4
test al, al
mov ebx, esi
je 0x404900
mov eax, dword [edi + 4]
mov edx, dword [esp + 0x14]
mov dword [eax + 4], eax
mov eax, dword [edi + 4]
mov dword [edi + 8], 0
mov dword [eax], eax
mov eax, dword [edi + 4]
mov dword [eax + 8], eax
mov eax, dword [esp + 0xc4]
lea ecx, [eax + eax*2]
lea eax, [edx + ecx*4 + 0x3308]
mov dword [esp + 0x10], eax
mov eax, dword [eax]
mov esi, dword [eax]
cmp esi, eax
je 0x40499e
mov ebx, dword [ebp + 4]
lea eax, [esi + 8]
push eax
mov eax, dword [ebx + 4]
push eax
push ebx
mov ecx, ebp
call fcn.00424c10
push 1
mov ecx, ebp
mov dword [esp + 0x1c], eax
call fcn.004038d0
mov eax, dword [esp + 0x18]
mov dword [ebx + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
lea eax, [esi + 8]
push eax
lea edx, [esp + 0x20]
push edx
mov ecx, edi
call fcn.00403ab0
mov eax, dword [esp + 0x10]
mov esi, dword [esi]
cmp esi, dword [eax]
jne 0x404958
mov eax, dword [esp + 0x60]
mov esi, 0x10
cmp eax, esi
jb 0x4049b8
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.00433080
add esp, 4
mov eax, dword [esp + 0x3c]
xor ebx, ebx
cmp eax, esi
mov edi, 0xf
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x4049e0
mov edx, dword [esp + 0x28]
push edx
call fcn.00433080
add esp, 4
cmp dword [esp + 0x90], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], ebx
mov byte [esp + 0x28], 0
jb 0x404a03
mov eax, dword [esp + 0x7c]
push eax
call fcn.00433080
add esp, 4
mov ecx, dword [esp + 0xb4]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xb0]
call fcn.004332fd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret 4
mov ecx, ebx
jmp 0x404733