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

Disassembly:
sub esp, 0x518
mov eax, dword [0x34c10e4]
xor eax, esp
mov dword [esp + 0x514], eax
mov eax, dword [esp + 0x52c]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x534]
mov ebx, ecx
xor ecx, ecx
mov dword [esp + 0x14], edx
and dword [esp + 0x1c], ecx
push edi
xor edi, edi
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x34], ecx
test ebx, ebx
je 0x10031feb
mov edx, dword [ebx + 0x68]
mov dword [esp + 0x20], edx
jmp 0x10031ff6
test esi, esi
je 0x10031ff6
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x20], ecx
and dword [esp + 0x30], edi
xor ecx, ecx
and dword [esp + 0x24], edi
mov ebp, dword [esp + 0x52c]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], ecx
test eax, eax
je 0x10032015
mov dword [eax], ebp
test ebx, ebx
jne 0x10032027
test esi, esi
jne 0x10032027
mov eax, 0xffffff53
jmp 0x10032684
push 0x8c
lea eax, [esp + 0x4c]
push 0
push eax
call fcn.10061dc0
add esp, 0xc
test ebx, ebx
je 0x10032053
mov eax, dword [ebx + 0x16c]
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x170]
mov dword [esp + 0x4c], eax
and dword [esp + 0x28], edi
mov eax, ebp
push ecx
mov ecx, dword [esp + 0x1c]
mov dl, 0x30
mov dword [esp + 0x20], eax
lea eax, [esp + 0x20]
push ebp
push eax
lea eax, [esp + 0x34]
push eax
call fcn.10042631
mov ebp, dword [esp + 0x544]
xor ecx, ecx
add esp, 0x10
inc ecx
test eax, eax
jns 0x100320b1
cmp ebp, ecx
jne 0x1003212b
push ecx
push dword [esp + 0x530]
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x34]
mov dl, 4
push eax
call fcn.10042631
add esp, 0x10
test eax, eax
js 0x1003212b
mov ebp, dword [esp + 0x1c]
lea ecx, [esp + 0x38]
add ebp, dword [esp + 0x28]
push dword [esp + 0x20]
mov edx, ebp
mov dword [esp + 0x54], ebp
push dword [esp + 0x538]
mov dword [esp + 0x24], ebp
call fcn.10046e44
mov edi, dword [esp + 0x40]
mov dword [esp + 0x1c], eax
pop ecx
pop ecx
test eax, eax
jne 0x100320f4
push ebp
push dword [esp + 0x1c]
push dword [edi]
call fcn.10061840
add esp, 0xc
mov ebp, dword [esp + 0x534]
xor eax, eax
inc eax
cmp ebp, eax
jne 0x10032125
mov edx, dword [edi + 8]
lea eax, [esp + 0x2c]
mov ecx, dword [edi]
push eax
call fcn.100433dd
pop ecx
test eax, eax
jle 0x10032119
mov dword [edi + 8], eax
mov eax, dword [esp + 0x2c]
xor ecx, ecx
mov dword [esp + 0x40], eax
jmp 0x10032138
mov ecx, dword [esp + 0x14]
jmp 0x1003213c
mov eax, dword [esp + 0x1c]
mov ecx, 0xffffff74
mov dword [esp + 0x50], eax
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x44]
test edx, edx
je 0x1003214a
mov eax, dword [esp + 0x50]
mov dword [edx], eax
test ecx, ecx
jns 0x1003218b
test edi, edi
je 0x1003217e
xor eax, eax
inc eax
cmp dword [edi + 0xc], eax
jne 0x1003216c
mov eax, dword [edi + 8]
mov ecx, dword [edi]
test eax, eax
je 0x1003216c
mov byte [ecx], 0
inc ecx
sub eax, 1
jne 0x10032163
and dword [edi], 0
mov ecx, edi
and dword [edi + 8], 0
call fcn.1005d745
mov ecx, dword [esp + 0x14]
test ebp, ebp
jne 0x10032489
jmp 0x10032457
test ebp, ebp
jne 0x10032490
test esi, esi
je 0x10032213
cmp byte [esi + 0x1ec], 0
je 0x100321fc
lea ebp, [esi + 0x214]
test ebp, ebp
je 0x100321db
mov ecx, dword [ebp]
test ecx, ecx
je 0x100321db
xor eax, eax
inc eax
cmp dword [ecx + 0xc], eax
jne 0x100321cb
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
test eax, eax
je 0x100321cb
mov byte [edx], 0
inc edx
sub eax, 1
jne 0x100321c2
and dword [ecx], 0
and dword [ecx + 8], 0
call fcn.1005d745
and dword [ebp], 0
mov ecx, dword [esi + 0x29c4]
call fcn.10036257
mov ecx, dword [esi + 0x29c4]
test ecx, ecx
je 0x100321fc
call fcn.1005d745
and dword [esi + 0x29c4], 0
xor eax, eax
mov dword [esi + 0x214], edi
inc eax
mov byte [esi + 0x29c8], al
mov byte [esi + 0x1ec], al
jmp 0x10032274
test ebx, ebx
je 0x10032274
lea ebp, [ebx + 0x34]
test ebp, ebp
je 0x1003224f
mov ecx, dword [ebp]
test ecx, ecx
je 0x1003224f
xor eax, eax
inc eax
cmp dword [ecx + 0xc], eax
jne 0x1003223f
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
test eax, eax
je 0x1003223f
mov byte [edx], 0
inc edx
sub eax, 1
jne 0x10032236
and dword [ecx], 0
and dword [ecx + 8], 0
call fcn.1005d745
and dword [ebp], 0
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
je 0x10032271
cmp dword [ebx + 0x60], 0
je 0x1003226d
call fcn.10036257
mov ecx, dword [ebx + 0x5c]
test ecx, ecx
je 0x1003226d
call fcn.1005d745
and dword [ebx + 0x5c], 0
mov dword [ebp], edi
push dword [esp + 0x20]
mov edx, dword [edi]
lea ecx, [esp + 0xdc]
push dword [edi + 8]
call fcn.10043e1f
pop ecx
pop ecx
xor edx, edx
lea ecx, [esp + 0xd8]
call fcn.10044eb4
test eax, eax
jns 0x100322b0
lea ecx, [esp + 0xd8]
call fcn.10043ec5
push 0xfffffffffffffffc
jmp 0x10032683
mov ebp, dword [esp + 0x3c]
test esi, esi
je 0x100322d9
test byte [esi + 0x568], 0x60
push 1
pop eax
cmove ebp, eax
mov eax, dword [esi]
test byte [eax + 0x6e], 0x10
je 0x100322d9
mov eax, 0xefff
and word [esi + 0x56a], ax
mov eax, dword [esp + 0xf0]
mov edx, 0x100
mov edi, dword [esp + 0x46c]
mov ecx, dword [esp + 0xf4]
sub eax, edx
je 0x1003231c
sub eax, 1
je 0x1003231c
sub eax, 0x107
je 0x1003231c
sub eax, 4
je 0x1003231c
sub eax, 1
je 0x1003231c
sub eax, 1
je 0x1003231c
test esi, esi
jne 0x1003232c
test ebx, ebx
je 0x1003235d
jmp 0x1003234b
test esi, esi
je 0x10032343
mov eax, 0x1000
or word [esi + 0x56a], ax
mov dword [esi + 0x5f0], edi
cmp ecx, 0x206
jne 0x1003235d
or word [esi + 0x56a], dx
jmp 0x1003235d
test ebx, ebx
je 0x1003235d
or byte [ebx + 0x6e], 0x10
mov dword [ebx + 0xd4], edi
cmp ecx, 0x206
jne 0x1003235d
or byte [ebx + 0x6e], 2
sub ecx, 0x206
je 0x100323e3
sub ecx, 0x7f
jne 0x1003243f
push ecx
push ecx
lea eax, [esp + 0x2c]
push eax
push ecx
push dword [esp + 0xec]
mov ecx, dword [esp + 0xec]
lea edx, [esp + 0x44]
call fcn.10043898
add esp, 0x14
mov dword [esp + 0x14], eax
test eax, eax
js 0x1003243f
test esi, esi
je 0x100323b7
mov eax, 0x100
test word [esi + 0x568], ax
jne 0x100323b7
movzx eax, word [esi + 0x584]
jmp 0x100323c9
test ebx, ebx
je 0x1003243f
test byte [ebx + 0x6d], 2
jne 0x1003243f
movzx eax, word [ebx + 0x76]
mov ecx, eax
test ax, ax
js 0x100323d9
movsx eax, cx
cmp dword [esp + 0x24], eax
jge 0x1003243f
mov dword [esp + 0x14], 0xfffffe67
jmp 0x1003243f
push 0
xor edx, edx
mov ecx, edi
call fcn.1004ac4f
pop ecx
mov ecx, eax
call fcn.10049803
mov edx, eax
test esi, esi
je 0x1003241b
mov eax, 0x100
test word [esi + 0x568], ax
jne 0x1003241b
movzx ecx, word [esi + 0x586]
mov eax, ecx
test cx, cx
js 0x10032437
cwde
jmp 0x10032433
test ebx, ebx
je 0x1003243f
test byte [ebx + 0x6d], 2
jne 0x1003243f
movzx eax, word [ebx + 0x78]
mov ecx, eax
test ax, ax
js 0x10032437
movsx eax, cx
cmp edx, eax
jge 0x1003243f
mov dword [esp + 0x14], 0xfffffe66
lea ecx, [esp + 0xd8]
call fcn.10043ec5
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x100325fc
test ebx, ebx
je 0x10032489
mov eax, dword [ebx + 0x58]
test eax, eax
je 0x10032489
cmp dword [eax + 0x40], 0
je 0x10032489
xor edx, edx
cmp ecx, 1
cmove ecx, edx
mov edx, dword [esp + 0x18]
push ecx
push ecx
push dword [esp + 0x534]
mov ecx, eax
call fcn.1003269d
add esp, 0xc
mov ecx, eax
mov eax, ecx
jmp 0x10032684
xor eax, eax
inc eax
cmp ebp, eax
jne 0x10032658
test esi, esi
je 0x100324ec
cmp byte [esi + 0x1ee], 0
je 0x100324de
lea ecx, [esi + 0x218]
test ecx, ecx
je 0x100324de
mov ecx, dword [ecx]
test ecx, ecx
je 0x100324de
cmp dword [ecx + 0xc], eax
jne 0x100324cf
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
test eax, eax
je 0x100324cf
mov byte [edx], 0
inc edx
sub eax, 1
jne 0x100324c6
and dword [ecx], 0
and dword [ecx + 8], 0
call fcn.1005d745
xor eax, eax
inc eax
mov dword [esi + 0x218], edi
mov byte [esi + 0x1ee], al
jmp 0x10032524
test ebx, ebx
je 0x10032524
lea ebp, [ebx + 0x48]
test ebp, ebp
je 0x10032521
mov ecx, dword [ebp]
test ecx, ecx
je 0x10032521
cmp dword [ecx + 0xc], eax
jne 0x10032515
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
test eax, eax
je 0x10032515
mov byte [edx], 0
inc edx
sub eax, 1
jne 0x1003250c
and dword [ecx], 0
and dword [ecx + 8], 0
call fcn.1005d745
mov dword [ebp], edi
mov ebp, dword [esp + 0x40]
lea eax, [esp + 0x18]
push ecx
push dword [esp + 0x24]
mov edx, esi
mov dword [esp + 0x20], ebp
push eax
lea eax, [esp + 0x40]
mov ecx, ebx
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.10031d01
mov ecx, dword [esp + 0x34]
add esp, 0x1c
test eax, eax
jne 0x10032562
test ecx, ecx
jne 0x100325f8
mov edx, dword [esp + 0x48]
test edx, edx
je 0x100325e8
test ebp, ebp
jne 0x100325e8
push dword [esp + 0x4c]
lea eax, [esp + 0x4d4]
push ebp
push 0x50
push eax
call edx
mov ebp, eax
add esp, 0x10
test ebp, ebp
js 0x100325be
mov edx, dword [edi + 8]
lea eax, [esp + 0x2c]
mov ecx, dword [edi]
push eax
lea eax, [esp + 0x4d4]
push ebp
push eax
call fcn.10043829
add esp, 0xc
test eax, eax
js 0x100325aa
mov dword [edi + 8], eax
lea eax, [esp + 0x4d0]
test ebp, ebp
je 0x100325be
mov byte [eax], 0
inc eax
sub ebp, 1
jne 0x100325b5
push ecx
push dword [esp + 0x24]
lea eax, [esp + 0x20]
mov edx, esi
push eax
lea eax, [esp + 0x40]
mov ecx, ebx
push eax
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.10031d01
mov ecx, dword [esp + 0x34]
add esp, 0x1c
test eax, eax
jne 0x10032684
test ecx, ecx
je 0x100322a9
mov ebp, dword [esp + 0x34]
test esi, esi
je 0x10032653
test ebp, ebp
je 0x10032653
movzx eax, word [esi + 0x568]
movzx ecx, word [esi + 0x56a]
shr eax, 5
mov edx, ecx
and eax, 3
shr ecx, 0xd
push eax
xor eax, eax
inc eax
and ecx, eax
mov eax, edx
push ecx
shr eax, 8
xor ecx, ecx
inc ecx
and eax, ecx
push eax
mov eax, edx
shr edx, 9
shr eax, 0xc
and edx, ecx
and eax, ecx
push eax
push ecx
push edx
movzx edx, word [esi + 0x434]
push ecx
push ecx
mov ecx, dword [esi + 4]
push edx
call fcn.10035e5f
add esp, 0x24
xor eax, eax
inc eax
jmp 0x10032684
test edi, edi
je 0x10032681
cmp dword [edi + 0xc], eax
jne 0x10032673
mov eax, dword [edi + 8]
mov ecx, dword [edi]
test eax, eax
je 0x10032673
mov byte [ecx], 0
inc ecx
sub eax, 1
jne 0x1003266a
and dword [edi], 0
mov ecx, edi
and dword [edi + 8], 0
call fcn.1005d745
push 0xfffffffffffffff8
pop eax
mov ecx, dword [esp + 0x524]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.100601b3
add esp, 0x518
ret