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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x324
mov eax, dword [0x100da4b0]
xor eax, esp
mov dword [esp + 0x320], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov esi, ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0xc]
mov ebx, edx
push 0x40
mov dword [esp + 0x1c], eax
xor eax, eax
mov edi, dword [esi + 0xc]
pop ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], eax
cmp word [ebx], cx
jbe 0x10031823
push ecx
push 0x100bf614
push esi
call fcn.1000b0e5
add esp, 0xc
jmp 0x100328e6
push 0x104
push eax
lea eax, [esp + 0x228]
push eax
call fcn.10090560
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x22c]
mov dword [esp + 0x88], eax
lea ecx, [esp + 0x84]
xor eax, eax
mov dword [esp + 0x84], esi
add esp, 0xc
mov dword [esp + 0x80], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x84], 0xa
mov dword [esp + 0x88], eax
push 0x3d
call fcn.1002fff4
movsx eax, word [ebx]
pop ecx
imul ecx, eax, 0x4c
add ecx, 0x68
call fcn.1000af3b
mov ecx, eax
mov dword [esp + 0x5c], ecx
call fcn.1000b991
test eax, eax
jne 0x100328d4
movsx eax, word [ebx]
mov dword [ecx + 0x14], eax
mov dword [ecx], esi
mov dword [ecx + 4], ebx
mov ecx, edi
call fcn.10015502
mov ecx, dword [esp + 0x5c]
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x100318ef
xor edx, edx
cmp word [ebx], dx
je 0x100318df
mov ecx, eax
call fcn.1001cdbc
test eax, eax
je 0x100318ef
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x5c]
push 1
push dword [ecx + 0x10]
mov edx, eax
mov ecx, esi
call fcn.1001e4f7
pop ecx
pop ecx
movsx edx, word [ebx]
test edx, edx
jle 0x10031922
mov ecx, dword [esp + 0x220]
lea edi, [ebx + 0x20]
mov eax, dword [edi]
lea edi, [edi + 0x30]
mov dword [esp + ecx*4 + 0x224], eax
mov ecx, dword [esp + 0x220]
inc ecx
mov dword [esp + 0x220], ecx
dec edx
jne 0x10031900
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x80]
dec eax
js 0x10031942
mov esi, eax
push esi
lea edx, [esp + 0x7c]
mov ecx, ebx
call fcn.1003041d
dec esi
pop ecx
jns 0x1003192e
mov esi, dword [esp + 0x28]
call fcn.1000b991
test eax, eax
jne 0x100328d4
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x5c]
or dword [esp + 0x40], 0xffffffff
add ebx, 0x1c
or dword [esp + 0x44], 0xffffffff
movsx edx, word [ecx]
or dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x14], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x60], ebx
test edx, edx
jle 0x10031bf4
movsd xmm0, qword [0x100cd628]
mov edi, ebx
xor eax, eax
movsd qword [esp + 0x70], xmm0
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x50], eax
imul eax, eax, 0x30
add eax, 8
add eax, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
cmp eax, edx
jge 0x10031b6b
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x18]
add edx, 0x64
imul eax, eax, 0x4c
add eax, edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x20], eax
test byte [edx + 0x15], 0xa
push 0
pop eax
setne al
cmp dword [esp + 0x4c], 0
mov dword [esp + 0x64], eax
je 0x100319fb
test eax, eax
jne 0x10031b5f
mov edx, dword [edx + 0x18]
lea ecx, [esp + 0x220]
call fcn.1003002c
and eax, dword [esp + 0x40]
and edx, dword [esp + 0x44]
or eax, edx
jne 0x10031a2e
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x50], eax
jne 0x10031b34
inc eax
mov dword [esp + 0x14], eax
jmp 0x10031b34
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 0xc]
cmp byte [eax + 0x39], 0
je 0x10031ab1
test ebx, ebx
je 0x10031a43
mov edx, dword [ebx]
jmp 0x10031a47
xor eax, eax
mov edx, eax
push dword [esp + 0x20]
xor eax, eax
cmp dword [esp + 0x4c], eax
sete al
push eax
push edx
push dword [esp + 0x50]
lea edx, [esp + 0x88]
push dword [esp + 0x50]
push ecx
mov ecx, esi
call fcn.10030d60
mov ecx, dword [esp + 0x38]
add esp, 0x18
mov eax, 0x800000
mov dword [esp + 0x30], eax
mov ecx, dword [ecx]
test ecx, ecx
je 0x10031a93
cmp dword [ecx + 0x20], 0
mov edx, 0x900000
cmovne eax, edx
mov dword [esp + 0x30], eax
xor edx, edx
and dword [esp + 0x1c], edx
comisd xmm0, xmmword [0x100cd620]
mov dword [esp + 0x54], edx
jbe 0x10031af8
movsd xmm0, qword [0x100cd620]
jmp 0x10031af8
cmp dword [esp + 0x48], 0
jne 0x10031ac0
test ebx, ebx
je 0x10031ac0
mov eax, dword [ebx]
jmp 0x10031ac2
xor eax, eax
lea edx, [esp + 0x1c]
push edx
lea edx, [esp + 0x34]
push edx
lea edx, [esp + 0x5c]
push edx
push eax
push dword [esp + 0x54]
lea edx, [esp + 0x8c]
push dword [esp + 0x54]
push ecx
mov ecx, esi
call fcn.10030fb2
mov edx, dword [esp + 0x70]
add esp, 0x1c
xor eax, eax
mov ecx, eax
mov eax, dword [esp + 0x30]
movsd xmm1, qword [esp + 0x70]
comisd xmm1, xmm0
jbe 0x10031b2d
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x4c], 1
movsd qword [esp + 0x70], xmm0
mov dword [esp + 0x38], edx
mov dword [esp + 0x2c], eax
mov dword [edi + 0x44], ecx
cmp dword [esp + 0x64], 0
jne 0x10031b5b
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x34]
inc dword [esp + 0x50]
add edx, 0x30
add dword [esp + 0x20], 0x4c
movsx eax, word [ecx]
mov dword [esp + 0x34], edx
cmp dword [esp + 0x50], eax
jl 0x100319de
jmp 0x10031b5f
mov ecx, dword [esp + 0x3c]
movsd xmm0, qword [0x100cd628]
mov ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x58]
test edx, 0x100000
je 0x10031b7e
mov eax, dword [esp + 0x18]
and dword [eax], 0
and dword [esp + 0x24], edx
mov eax, dword [esp + 0x38]
mov dword [edi + 4], edx
mov edx, dword [esp + 0x10]
mov dword [edi + 0x38], edx
xor edx, edx
mov dword [edi + 0x10], eax
mov dword [edi + 0x40], edx
mov dword [edi + 0x3c], edx
test eax, eax
je 0x10031baa
mov eax, dword [esi + 0x1c]
mov dword [edi + 0x18], eax
inc dword [esi + 0x1c]
jmp 0x10031bae
or dword [edi + 0x18], 0xffffffff
imul edx, dword [esp + 0x2c], 0x30
mov edx, dword [edx + ecx + 0x20]
lea ecx, [esp + 0x220]
call fcn.1003002c
mov ecx, dword [esp + 0x3c]
not eax
and dword [esp + 0x40], eax
not edx
mov eax, dword [esp + 0x2c]
and dword [esp + 0x44], edx
mov dword [edi], eax
add edi, 0x4c
mov eax, dword [esp + 0x48]
movsx edx, word [ecx]
inc eax
mov dword [esp + 0x48], eax
cmp eax, edx
jl 0x1003198a
mov edi, dword [esp + 0x68]
test dword [esp + 0x24], 0x400000
je 0x10031c0a
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10031c0a
xor ecx, ecx
mov dword [eax], ecx
or edx, 0xffffffff
mov ecx, esi
call fcn.100233c1
mov ecx, dword [esp + 0x3c]
xor eax, eax
mov dword [esp + 0x34], eax
cmp ax, word [ecx]
jge 0x10031e6d
cmp byte [esi + 0x80], 2
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x38], eax
jne 0x10031ce9
imul esi, dword [ebx], 0x30
push dword [esi + ecx + 0xc]
push 0x100bf630
call fcn.1000a501
mov edx, dword [esp + 0x44]
pop ecx
pop ecx
mov ecx, dword [esi + edx + 0x10]
test ecx, ecx
je 0x10031c69
push ecx
push eax
push 0x100bf63c
call fcn.1000a501
add esp, 0xc
mov ecx, dword [ebx + 0x10]
test ecx, ecx
je 0x10031c82
push dword [ecx]
push eax
push 0x100bf648
call fcn.1000a501
add esp, 0xc
jmp 0x10031cb5
test dword [ebx + 4], 0x300
je 0x10031c9a
push eax
push 0x100bf65c
call fcn.1000a501
pop ecx
pop ecx
jmp 0x10031cb5
mov ecx, dword [ebx + 0x44]
test ecx, ecx
je 0x10031cb5
push dword [ecx + 0x18]
push dword [ecx + 0x14]
push eax
push 0x100bf674
call fcn.1000a501
add esp, 0x10
test dword [ebx + 4], 0x100000
je 0x10031ccb
push eax
push 0x100bf694
call fcn.1000a501
pop ecx
pop ecx
push 0xffffffffffffffff
push eax
push dword [ebx]
mov ecx, edi
push dword [esp + 0x40]
push 0x75
pop edx
call fcn.100154d6
mov esi, dword [esp + 0x38]
add esp, 0x10
mov ecx, dword [esp + 0x3c]
imul eax, dword [ebx], 0x30
mov dword [esp + 0x14], eax
mov eax, dword [eax + ecx + 0x14]
mov ecx, dword [esi]
mov dword [esp + 0x10], eax
mov edx, dword [eax + 0x4c]
call fcn.100296c1
mov ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x58], ecx
cmp byte [eax + 0x35], 0
jne 0x10031e52
xor edx, edx
cmp dword [eax + 0x18], edx
jne 0x10031e52
cmp dword [ebx + 0x44], edx
je 0x10031d4a
push 0xfffffffffffffff6
push dword [eax + 0x40]
mov eax, dword [esp + 0x1c]
mov ecx, edi
push edx
mov edx, dword [esp + 0x48]
push dword [eax + edx + 0x20]
push 0x1d
pop edx
call fcn.100154d6
add esp, 0x10
jmp 0x10031dd0
test dword [ebx + 4], 0x80000
jne 0x10031dbe
mov edx, dword [esp + 0x3c]
push 0xe
push eax
mov eax, dword [esp + 0x1c]
push ecx
mov ecx, esi
mov edx, dword [eax + edx + 0x20]
call fcn.10023ecd
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp dword [eax + 4], 0x40
jae 0x10031dd0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + eax + 0x30]
mov ecx, dword [ecx + eax + 0x34]
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, edx
or eax, ecx
je 0x10031dac
mov esi, dword [esp + 0x20]
shrd edx, ecx, 1
shr ecx, 1
mov eax, edx
inc esi
or eax, ecx
jne 0x10031d97
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x28]
mov edx, dword [edi + 0x10]
mov ecx, edi
push dword [esp + 0x20]
dec edx
call fcn.1001571e
pop ecx
jmp 0x10031dd0
push dword [eax]
push edx
push dword [eax + 0x14]
mov edx, ecx
mov ecx, esi
call fcn.1002029f
add esp, 0xc
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax + 0x20]
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x10], eax
test eax, eax
je 0x10031e29
mov edx, eax
mov ecx, esi
call fcn.100236b1
mov esi, eax
mov ecx, edi
xor eax, eax
push eax
push dword [esp + 0x5c]
push 0x2f
pop edx
call fcn.10015483
mov eax, dword [esp + 0x18]
mov ecx, edi
push 0xfffffffffffffff7
push esi
push dword [eax + 0x14]
push dword [esp + 0x4c]
push 0xe
pop edx
call fcn.100154d6
mov esi, dword [esp + 0x40]
add esp, 0x18
mov eax, dword [esp + 0x10]
test dword [ebx + 4], 0x82000
je 0x10031e47
mov eax, dword [eax + 4]
mov ecx, edi
inc eax
push eax
push dword [esp + 0x3c]
push 0x67
pop edx
call fcn.10015483
pop ecx
pop ecx
mov edx, dword [esp + 0x58]
mov ecx, esi
call fcn.100233c1
mov ecx, dword [esp + 0x3c]
add ebx, 0x4c
mov edx, dword [esp + 0x34]
inc edx
mov dword [esp + 0x34], edx
movsx eax, word [ecx]
cmp edx, eax
jl 0x10031c27
mov ebx, dword [esp + 0x5c]
mov eax, dword [edi + 0x10]
or dword [esp + 0x2c], 0xffffffff
or dword [esp + 0x30], 0xffffffff
mov dword [ebx + 8], eax
xor eax, eax
mov dword [esp + 0x64], eax
cmp ax, word [ecx]
jge 0x100328c0
mov ebx, dword [esp + 0x60]
imul eax, dword [ebx], 0x30
mov dword [esp + 0x10], eax
mov eax, dword [eax + ecx + 0x20]
mov ecx, dword [ebx + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x24], eax
mov eax, ecx
shr ecx, 0x13
and ecx, 1
shr eax, 0x15
and eax, 1
mov dword [esp + 0x38], ecx
mov ecx, edi
mov dword [esp + 0x18], eax
call fcn.10015502
mov ecx, edi
mov dword [esp + 0x40], eax
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], eax
call fcn.10015502
xor edx, edx
mov dword [esp + 0x6c], eax
mov dword [ebx + 0x24], eax
cmp dword [ebx], edx
jle 0x10031f25
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
test byte [ecx + eax + 0x1d], 8
je 0x10031f25
cmp dword [esi + 0x20], edx
jne 0x10031f0a
mov dword [esi + 0x20], 1
mov eax, dword [esi + 0x20]
mov ecx, edi
mov dword [ebx + 0xc], eax
inc dword [esi + 0x20]
push dword [ebx + 0xc]
push edx
push 0x30
pop edx
call fcn.10015483
pop ecx
pop ecx
xor edx, edx
mov eax, dword [ebx + 0x44]
mov dword [esp + 0x14], eax
test eax, eax
je 0x10032066
mov edx, dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x54], edx
xor edx, edx
inc edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x58], eax
mov dword [esp + 0x38], edx
cmp ecx, edx
jl 0x10031fb0
mov edi, eax
xor eax, eax
mov dword [esp + 0x10], eax
test ecx, ecx
jle 0x10031f9f
mov ebx, dword [esp + 0x54]
cmp dword [ebx + eax*8], edx
mov ebx, dword [esp + 0x60]
je 0x10031f77
inc eax
mov dword [esp + 0x10], eax
cmp eax, ecx
jl 0x10031f5f
jmp 0x10031f9f
imul eax, eax, 0xc
mov ecx, esi
imul edx, dword [eax + edi + 8], 0x28
mov eax, dword [esp + 0x88]
mov edx, dword [edx + eax]
mov edx, dword [edx + 0xc]
call fcn.1001da26
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x38]
cmp eax, ecx
je 0x10031fac
inc edx
mov dword [esp + 0x38], edx
cmp edx, ecx
jle 0x10031f55
mov edi, dword [esp + 0x68]
xor esi, esi
lea eax, [edx - 1]
push esi
push eax
push 0x2f
pop edx
mov ecx, edi
call fcn.10015483
push esi
mov esi, dword [esp + 0x20]
mov ecx, edi
push dword [esi + 0x14]
push 0x2f
pop edx
call fcn.10015483
push 0xfffffffffffffffe
pop eax
push 0xfffffffffffffff5
pop ecx
xor edx, edx
cmp dword [esi + 0x1c], edx
cmovne eax, ecx
mov ecx, edi
push eax
push dword [esi + 0x18]
push dword [esp + 0x58]
push dword [esp + 0x38]
push 0x6a
pop edx
call fcn.100154d6
xor eax, eax
add esp, 0x20
mov ecx, eax
mov dword [esi + 0x1c], eax
mov dword [esp + 0x10], ecx
cmp dword [esi], eax
jle 0x10032050
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
add edi, 8
add eax, 4
mov dword [esp + 0x38], eax
cmp byte [eax], 0
je 0x10032039
imul edx, dword [edi], 0x28
mov ecx, ebx
add edx, dword [esp + 0x88]
call fcn.1003154d
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
inc ecx
add eax, 8
add edi, 0xc
mov dword [esp + 0x10], ecx
mov dword [esp + 0x38], eax
cmp ecx, dword [esi]
jl 0x1003201b
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x2c], 2
mov dword [ebx + 0x30], eax
mov eax, dword [edi + 0x10]
jmp 0x10032783
mov eax, dword [ebx + 4]
test eax, 0x100
je 0x100320c6
push edx
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x7c]
push 3
push dword [esp + 0x38]
push dword [esp + 0x38]
push 0xffffffffffffffff
call fcn.100301c4
add esp, 0x14
mov edx, eax
mov ecx, esi
push ebx
call fcn.1003158e
mov esi, dword [ebx + 0x20]
pop ecx
push esi
push 1
push 0x23
pop edx
mov ecx, edi
call fcn.10015483
push esi
push dword [esp + 0x28]
mov ecx, edi
push 0x2c
pop edx
call fcn.10015483
add esp, 0x10
mov dword [ebx + 0x2c], 0x15
jmp 0x10032786
test eax, 0x200
je 0x10032288
push edx
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x7c]
push 0x24
push dword [esp + 0x38]
mov dword [esp + 0x2c], 0x15
push dword [esp + 0x38]
push 0xffffffffffffffff
call fcn.100301c4
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x8c]
add esp, 0x14
mov esi, eax
xor eax, eax
mov dword [esp + 0x10], esi
push eax
push 0x18
push dword [esp + 0x38]
push dword [esp + 0x38]
push 0xffffffffffffffff
call fcn.100301c4
mov ecx, dword [esp + 0x2c]
add esp, 0x14
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x10032134
mov dword [esp + 0x14], esi
mov esi, eax
mov dword [esp + 0x10], esi
test esi, esi
je 0x10032193
mov esi, dword [esi]
mov ecx, dword [esp + 0x28]
mov edx, dword [esi + 0xc]
call fcn.1001da26
mov al, byte [esi]
cmp al, 0x46
je 0x10032154
cmp al, 0x45
je 0x10032154
xor eax, eax
jmp 0x10032157
xor eax, eax
inc eax
mov esi, dword [esp + 0x40]
mov ecx, edi
push esi
push eax
push 0x73
pop edx
call fcn.10015483
cmp dword [esp + 0x20], 0
mov ecx, edi
push esi
push dword [esp + 0x28]
push 0x7f
pop eax
mov edx, eax
push 0x63
pop eax
cmovne edx, eax
call fcn.10015483
mov edx, dword [esp + 0x20]
add esp, 0x10
mov ecx, ebx
call fcn.1003154d
jmp 0x100321af
push dword [esp + 0x40]
test ecx, ecx
mov ecx, edi
push dword [esp + 0x20]
push 0x7c
pop edx
push 0x34
pop eax
cmovne edx, eax
call fcn.10015483
pop ecx
pop ecx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10032225
mov esi, dword [eax]
mov ecx, dword [esp + 0x28]
mov edx, dword [esi + 0xc]
call fcn.1001da26
mov ecx, dword [esp + 0x28]
push 1
mov eax, dword [ecx + 0x20]
mov dword [ebx + 8], eax
inc dword [ecx + 0x20]
mov ecx, edi
push dword [ebx + 8]
push 0x7b
pop edx
call fcn.10015483
mov al, byte [esi]
pop ecx
pop ecx
cmp al, 0x47
je 0x10032205
cmp al, 0x45
je 0x10032205
cmp dword [esp + 0x18], 0
push 0x45
pop esi
push 0x47
pop eax
cmovne esi, eax
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x18]
jmp 0x10032218
mov esi, dword [esp + 0x18]
test esi, esi
push 0x48
pop eax
push 0x46
pop ecx
cmovne eax, ecx
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x14]
mov ecx, ebx
call fcn.1003154d
jmp 0x10032229
mov esi, dword [esp + 0x18]
mov ecx, dword [edi + 0x10]
test esi, esi
mov esi, dword [esp + 0x20]
push 0x6d
pop eax
push 0x31
pop edx
cmovne eax, edx
mov dword [ebx + 0x34], ecx
mov dword [ebx + 0x2c], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x30], eax
cmp esi, 0x15
je 0x10032786
xor ecx, ecx
push ecx
push eax
push 0x25
pop edx
mov ecx, edi
call fcn.10015483
xor eax, eax
xor edx, edx
push eax
push dword [ebx + 8]
inc edx
mov ecx, edi
call fcn.10015483
push dword [esp + 0x50]
mov edx, esi
mov ecx, edi
push 0x63
pop eax
push eax
call fcn.10015483
add esp, 0x18
jmp 0x10032786
test eax, 0x2000
je 0x10032648
push dword [esp + 0x30]
mov edx, dword [ebx + 0x38]
mov ecx, eax
push dword [esp + 0x30]
shr eax, 0x11
shr ecx, 0x10
and eax, 1
and ecx, 1
mov dword [esp + 0x28], eax
lea eax, [esp + 0x80]
mov dword [esp + 0x50], edx
mov dword [esp + 0x1c], ecx
mov edx, ebx
push eax
mov ecx, esi
call fcn.1003165c
mov ecx, dword [esp + 0x54]
xor eax, eax
add esp, 0xc
mov dword [esp + 0x4c], eax
test ecx, ecx
jle 0x10032303
lea ebx, [ecx - 1]
mov dword [esp + 0x4c], ecx
mov esi, ecx
push eax
push ebx
push 0x5d
pop edx
mov ecx, edi
call fcn.10015483
pop ecx
pop ecx
push 0
pop eax
dec esi
jne 0x100322e3
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x28]
cmp byte [ecx + eax], 0
jne 0x1003231c
push 0x18
mov dword [esp + 0x14], 0x24
jmp 0x1003233a
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x48]
push 0x24
mov dword [esp + 0x14], 0x18
mov dword [esp + 0x24], eax
cmp dword [esp + 0x18], 0
mov eax, dword [ebx + 0x20]
pop edx
mov dword [esp + 0x34], eax
je 0x100323c1
mov ecx, dword [esp + 0x50]
push ecx
push edx
push dword [esp + 0x38]
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x38]
mov edx, dword [esp + 0x2c]
push dword [eax + ecx*4]
lea ecx, [esp + 0x8c]
call fcn.100301c4
mov ecx, dword [esp + 0x3c]
mov esi, eax
add esp, 0x14
mov edx, dword [esi]
mov edx, dword [edx + 0xc]
call fcn.1001da26
push dword [esp + 0x34]
or ecx, 0xffffffff
sub ecx, dword [esp + 0x4c]
push ecx
push 0x41
pop edx
mov ecx, edi
call fcn.10015483
movzx eax, word [esi + 0xa]
mov edx, esi
pop ecx
pop ecx
and eax, 0x28
mov ecx, ebx
mov dword [esp + 0x54], eax
call fcn.1003154d
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x48]
push 0x3f
pop eax
mov dword [esp + 0x44], eax
jmp 0x100323dd
push 0x15
pop eax
test ecx, ecx
mov dword [esp + 0x54], 1
push 0x3f
pop edx
cmovg eax, edx
mov dword [esp + 0x44], eax
cmp eax, 0x15
je 0x10032434
mov eax, dword [esi + 0x20]
mov dword [ebx + 8], eax
xor eax, eax
inc dword [esi + 0x20]
push eax
mov eax, dword [esp + 0x18]
add eax, ecx
mov ecx, edi
push eax
push 0x5a
pop edx
call fcn.10015483
mov edx, dword [esp + 0x58]
pop ecx
pop ecx
mov ecx, edi
call fcn.100258f2
cmp dword [esp + 0x18], 0
mov ecx, edi
je 0x1003242a
push dword [esp + 0x34]
cmp dword [esp + 0x58], 0
push dword [esp + 0x28]
push 0x63
pop eax
mov edx, eax
push 0x54
pop eax
cmovne edx, eax
jmp 0x1003244a
push 1
push dword [ebx + 8]
push 0x7b
pop edx
jmp 0x1003244a
cmp dword [esp + 0x18], 0
je 0x10032451
push dword [esp + 0x40]
mov ecx, edi
push dword [esp + 0x28]
push 0x34
pop eax
mov edx, eax
call fcn.10015483
pop ecx
pop ecx
mov eax, dword [esp + 0x20]
test eax, eax
je 0x100324cd
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
push ecx
push dword [esp + 0x14]
mov eax, dword [ecx + 8]
push dword [esp + 0x38]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x38]
push dword [eax + ecx*4]
lea ecx, [esp + 0x8c]
call fcn.100301c4
mov ecx, dword [esp + 0x3c]
mov esi, eax
add esp, 0x14
mov edx, dword [esi]
mov edx, dword [edx + 0xc]
call fcn.1001da26
push dword [esp + 0x34]
or ecx, 0xffffffff
sub ecx, dword [esp + 0x4c]
push ecx
push 0x41
pop edx
mov ecx, edi
call fcn.10015483
movzx eax, word [esi + 0xa]
mov edx, esi
pop ecx
pop ecx
and eax, 0x28
mov ecx, ebx
mov dword [esp + 0x4c], eax
call fcn.1003154d
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
jmp 0x100324d5
mov dword [esp + 0x4c], 1
mov ecx, dword [esp + 0x48]
test ecx, ecx
jg 0x10032506
test eax, eax
jne 0x10032506
mov esi, dword [esp + 0x18]
test esi, esi
je 0x100324f2
push 0x15
pop eax
mov dword [esp + 0x44], eax
jmp 0x10032571
push dword [esp + 0x40]
mov ecx, edi
push dword [esp + 0x28]
push 0x7c
pop edx
call fcn.10015483
jmp 0x1003256b
xor edx, edx
add eax, ecx
push edx
push eax
push 0x5a
pop edx
mov ecx, edi
call fcn.10015483
mov edx, dword [esp + 0x58]
pop ecx
pop ecx
mov ecx, edi
call fcn.100258f2
cmp dword [esp + 0x18], 0
mov ecx, edi
je 0x1003254c
mov eax, dword [esi + 0x20]
mov dword [ebx + 8], eax
inc dword [esi + 0x20]
push 1
push dword [ebx + 8]
push 0x7b
pop edx
call fcn.10015483
mov dword [esp + 0x4c], 0x26
jmp 0x10032567
push dword [esp + 0x34]
cmp dword [esp + 0x50], 0
push dword [esp + 0x28]
push 7
pop edx
push 0x7f
pop eax
cmovne edx, eax
call fcn.10015483
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
pop ecx
pop ecx
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x10], ecx
cmp eax, 0x15
je 0x100325cc
xor eax, eax
xor edx, edx
push eax
push dword [ebx + 8]
inc edx
mov ecx, edi
call fcn.10015483
push dword [esp + 0x3c]
mov edx, dword [esp + 0x50]
mov ecx, edi
push dword [esp + 0x30]
call fcn.10015483
add esp, 0x10
cmp dword [esp + 0x54], 0
je 0x100325ae
test esi, esi
je 0x100325b9
cmp dword [esp + 0x4c], 0
jne 0x100325cc
test esi, esi
je 0x100325cc
push 0xfffffffffffffffe
push 0x100bf6a0
or edx, 0xffffffff
mov ecx, edi
call fcn.100157dd
pop ecx
pop ecx
mov eax, dword [esp + 0x20]
or eax, dword [esp + 0x14]
je 0x100325fc
mov edx, dword [esp + 0x48]
mov ecx, edi
push edx
push dword [esp + 0x28]
push 3
pop edx
call fcn.10015483
push dword [esp + 0x74]
mov ecx, edi
push 1
push 0x41
pop edx
call fcn.10015483
add esp, 0x10
cmp dword [esp + 0x38], 0
jne 0x1003262a
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x28]
push 0x35
pop edx
call fcn.10015483
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x28]
push 0x7f
pop eax
mov edx, eax
call fcn.10015483
add esp, 0x10
push 0x6d
pop eax
push 0x31
test esi, esi
pop ecx
cmovne eax, ecx
mov dword [ebx + 0x2c], eax
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x10]
jmp 0x10032783
test eax, 0x1000
je 0x10032763
push dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x7c]
push dword [esp + 0x30]
mov esi, dword [ebx + 0x38]
mov edx, ebx
push eax
call fcn.1003165c
mov eax, dword [ebx + 0x20]
add esp, 0xc
mov dword [esp + 0x10], eax
mov ecx, edi
xor eax, eax
push eax
push esi
push 0x5a
pop edx
call fcn.10015483
mov edx, dword [esp + 0x58]
mov ecx, edi
call fcn.100258f2
xor eax, eax
mov ecx, edi
push eax
push dword [ebx + 8]
push 0x7b
pop edx
call fcn.10015483
mov esi, dword [esp + 0x20]
add esp, 0x10
cmp dword [esp + 0x18], 0
mov ecx, edi
push esi
push dword [esp + 0x28]
je 0x100326ef
push 0x54
pop eax
mov edx, eax
call fcn.10015483
xor eax, eax
xor edx, edx
push eax
push dword [ebx + 8]
inc edx
mov ecx, edi
call fcn.10015483
push esi
mov esi, dword [esp + 0x38]
mov ecx, edi
push esi
push 0x26
pop edx
mov dword [esp + 0x28], eax
call fcn.10015483
add esp, 0x18
push 0x31
pop eax
mov dword [ebx + 0x2c], eax
jmp 0x10032730
push 0x7f
pop eax
mov edx, eax
call fcn.10015483
xor eax, eax
xor edx, edx
push eax
push dword [ebx + 8]
inc edx
mov ecx, edi
call fcn.10015483
push 0xfffffffffffffffe
push 0x100bf6a0
push esi
mov esi, dword [esp + 0x40]
mov ecx, edi
push esi
mov dword [esp + 0x30], eax
push 0x3f
pop eax
mov edx, eax
call fcn.100154d6
add esp, 0x20
mov dword [ebx + 0x2c], 0x6d
cmp dword [esp + 0x38], 0
jne 0x1003275b
xor eax, eax
mov ecx, edi
push eax
push esi
push 0x35
pop edx
call fcn.10015483
xor eax, eax
mov ecx, edi
push eax
push dword [esp + 0x28]
push 0x7f
pop eax
mov edx, eax
call fcn.10015483
add esp, 0x10
mov dword [ebx + 0x30], esi
jmp 0x1003263f
push dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov ecx, edi
push eax
push 0x7c
pop edx
mov dword [ebx + 0x2c], 0x6d
mov dword [ebx + 0x30], eax
call fcn.10015483
pop ecx
pop ecx
inc eax
mov dword [ebx + 0x34], eax
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x220]
call fcn.1003002c
not edx
not eax
and dword [esp + 0x30], edx
mov edx, dword [esp + 0x80]
and dword [esp + 0x2c], eax
mov dword [esp + 0x10], edx
test edx, edx
jle 0x1003280c
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x28]
add esi, 0xc
test byte [esi], 6
jne 0x100327fc
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
and ecx, dword [esp + 0x2c]
and eax, dword [esp + 0x30]
or ecx, eax
jne 0x100327fc
mov eax, dword [esi - 0xc]
cmp dword [ebx + 0xc], ecx
je 0x100327e4
test byte [eax + 2], 1
je 0x100327fc
push 1
push dword [esp + 0x70]
mov edx, eax
mov ecx, edi
call fcn.1001e4f7
or byte [esi], 4
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
dec edx
add esi, 0x28
mov dword [esp + 0x10], edx
test edx, edx
jg 0x100327bf
mov edi, dword [esp + 0x68]
cmp dword [ebx + 0xc], 0
je 0x10032899
push dword [ebx + 0xc]
mov eax, dword [edi + 0x10]
mov ecx, edi
push 1
push 0x30
pop edx
mov dword [ebx + 0x28], eax
call fcn.10015483
mov edx, dword [esp + 0x88]
xor eax, eax
mov dword [esp + 0x1c], eax
pop ecx
pop ecx
test edx, edx
jle 0x10032899
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x28]
add esi, 0xc
mov ebx, dword [esp + 0x2c]
test byte [esi], 6
jne 0x10032885
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
and ecx, ebx
and eax, dword [esp + 0x30]
or ecx, eax
jne 0x10032881
mov edx, dword [esi - 0xc]
mov ecx, edi
push 1
push dword [esp + 0x70]
call fcn.1001e4f7
or byte [esi], 4
mov edx, dword [esp + 0x88]
pop ecx
pop ecx
mov eax, dword [esp + 0x14]
inc eax
add esi, 0x28
mov dword [esp + 0x14], eax
cmp eax, edx
jl 0x10032850
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x60]
mov ecx, dword [esp + 0x3c]
add ebx, 0x4c
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x28]
inc edx
mov dword [esp + 0x64], edx
movsx eax, word [ecx]
mov dword [esp + 0x60], ebx
cmp edx, eax
jl 0x10031e94
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x6c]
lea ecx, [esp + 0x78]
mov dword [ebx + 0xc], eax
call fcn.1002ff41
mov eax, ebx
jmp 0x100328e8
lea ecx, [esp + 0x78]
call fcn.1002ff41
mov ecx, dword [esp + 0x5c]
call fcn.10031770
xor eax, eax
mov ecx, dword [esp + 0x32c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1008a221
mov esp, ebp
pop ebp
ret