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

Disassembly:
sub esp, 0x25c
mov eax, dword [0x4881810]
xor eax, esp
mov dword [esp + 0x258], eax
cmp dword [0x48864e4], 0
push ebx
mov ebx, dword [esp + 0x264]
push ebp
push esi
push edi
je 0x1002e14b
push ebx
push 0x4882ad0
push 0x3ea
call fcn.100341f0
add esp, 0xc
push 0
push 0
call fcn.1000bd40
xor ecx, ecx
cmp ebx, 1
mov ebx, 4
setg cl
shl ebx, cl
imul eax, ebx, 0x2c0000
mov dword [esp + 0x54], ebx
add eax, 0x180000
push eax
call fcn.100377a0
mov ebp, eax
add esp, 0xc
mov dword [esp + 0x5c], ebp
test ebp, ebp
jne 0x1002e1ae
push 0x4882b10
push dword [0x498d548]
push 0x4885094
push 0x3ea
call fcn.100341f0
push 1
push 0x494ae60
call fcn.10034ff0
add esp, 0x18
imul eax, ebx, 0x180000
mov dword [esp + 0x6c], ebp
add eax, ebp
mov dword [esp + 0x78], eax
imul eax, ebx, 0x280000
add eax, 0x180000
add eax, ebp
mov ebp, 6
mov dword [esp + 0x80], eax
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], ebp
jmp 0x1002e1f5
mov ebp, 6
add eax, 6
xor edi, edi
cdq
idiv ebp
mov dword [esp + 0x44], edi
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x3c], ecx
jmp 0x1002e215
mov ebp, 6
lea eax, [edi + 6]
xor esi, esi
cdq
xor ebx, ebx
idiv ebp
xor eax, eax
mov dword [esp + 0x38], esi
mov ebp, 0x487bd72
mov dword [esp + 0x34], ebp
cmp byte [edx + ecx + 0x498d520], 1
sete al
mov dword [esp + 0x48], eax
lea ecx, [ecx]
movsx ecx, word [ebp - 2]
movsx eax, word [ebp - 6]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x30]
add ecx, 6
add eax, ecx
mov ecx, 6
cdq
idiv ecx
movsx eax, word [ebp - 2]
add eax, 6
add eax, edi
lea ecx, [edx + edx*2]
cdq
idiv dword [esp + 0x40]
cmp byte [edx + ecx*2 + 0x498d520], 1
jne 0x1002e284
xor ebx, ebx
mov dword [esp + 0x58], ebx
jmp 0x1002e2a6
inc ebx
mov dword [esp + 0x58], ebx
cmp ebx, 4
jne 0x1002e2a6
mov eax, dword [esp + 0x30]
movzx eax, ax
mov dword [esp + 0x88], eax
movzx eax, di
mov dword [esp + 0x90], eax
mov ecx, dword [esp + 0x48]
lea eax, [ecx + 1]
cmp ebx, eax
jne 0x1002e591
movsx ebx, word [ebp - 4]
mov eax, ecx
shl eax, 5
movsx ebp, word [ebp]
mov dword [esp + 0x24], eax
add edi, dword [esp + 0x20]
movsx ecx, word [eax + 0x487bdba]
movsx esi, word [eax + 0x487bdb8]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
shl edi, 4
add edx, eax
mov eax, dword [esp + 0x48]
add eax, eax
and eax, dword [esp + 0x38]
add esi, ecx
mov dword [esp + 0x10], eax
lea ecx, [edi + eax]
mov ax, dx
imul ax, word [0x498d084]
shl edx, 9
add edx, esi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdbe]
movsx esi, word [eax + 0x487bdbc]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
add edx, eax
mov ax, dx
shl edx, 9
imul ax, word [0x498d084]
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 1
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdc2]
movsx esi, word [eax + 0x487bdc0]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
add edx, eax
mov ax, dx
shl edx, 9
imul ax, word [0x498d084]
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 2
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdc6]
movsx esi, word [eax + 0x487bdc4]
mov edx, ecx
mov eax, esi
imul edx, ebx
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
add edx, eax
imul ecx, ebp
add esi, ecx
mov ax, dx
imul ax, word [0x498d084]
mov ecx, dword [esp + 0x10]
xor ecx, 3
shl edx, 9
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov word [esp + ecx*2 + 0x158], dx
mov eax, dword [esp + 0x24]
movsx ecx, word [eax + 0x487bdca]
movsx esi, word [eax + 0x487bdc8]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
add edx, eax
mov ax, dx
shl edx, 9
imul ax, word [0x498d084]
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 4
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdce]
movsx esi, word [eax + 0x487bdcc]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
add edx, eax
mov ax, dx
shl edx, 9
imul ax, word [0x498d084]
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 5
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdd2]
movsx esi, word [eax + 0x487bdd0]
mov edx, ecx
imul edx, ebx
mov eax, esi
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
imul ecx, ebp
add edx, eax
mov ax, dx
shl edx, 9
imul ax, word [0x498d084]
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 6
add edx, esi
add ecx, edi
add ax, si
mov word [esp + ecx*2 + 0x148], ax
mov eax, dword [esp + 0x24]
mov word [esp + ecx*2 + 0x158], dx
movsx ecx, word [eax + 0x487bdd6]
movsx esi, word [eax + 0x487bdd4]
mov edx, ecx
mov eax, esi
imul edx, ebx
imul eax, dword [esp + 0x18]
imul esi, dword [esp + 0x14]
add edx, eax
mov ebx, dword [esp + 0x58]
mov ax, dx
imul ax, word [0x498d084]
imul ecx, ebp
mov ebp, dword [esp + 0x34]
shl edx, 9
add esi, ecx
mov ecx, dword [esp + 0x10]
xor ecx, 7
add ax, si
add ecx, edi
mov edi, dword [esp + 0x44]
add edx, esi
mov esi, dword [esp + 0x38]
mov word [esp + ecx*2 + 0x148], ax
mov word [esp + ecx*2 + 0x158], dx
add ebp, 4
add esi, 2
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebp
cmp ebp, 0x487bd86
jl 0x1002e240
mov ecx, dword [esp + 0x3c]
inc edi
mov dword [esp + 0x44], edi
cmp edi, 3
jl 0x1002e210
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
add ebx, 3
inc eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], eax
cmp ebx, 9
jl 0x1002e1f0
movzx eax, word [0x498d086]
mov ebx, 2
sub eax, ebx
cmp eax, ebx
jle 0x1002e680
movzx ebp, word [0x498d084]
mov edi, 2
mov dword [esp + 0x10], 0
mov esi, 0xffff
lea eax, [ebp - 2]
cmp eax, edi
jle 0x1002e66d
lea ecx, [ebx + 6]
mov dword [esp + 0x18], 8
mov dword [esp + 0x14], ecx
nop
mov eax, ecx
mov ecx, 6
cdq
idiv ecx
mov eax, dword [esp + 0x18]
lea ecx, [edx + edx*2]
cdq
idiv dword [esp + 0x40]
cmp byte [edx + ecx*2 + 0x498d520], 1
jne 0x1002e6e3
mov dword [esp + 0x10], 0
mov esi, 0xffff
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
movzx ebp, word [0x498d084]
inc eax
mov dword [esp + 0x18], eax
inc edi
lea eax, [ebp - 2]
cmp edi, eax
jl 0x1002e620
movzx eax, word [0x498d086]
inc ebx
sub eax, 2
cmp ebx, eax
jl 0x1002e5f0
movzx eax, word [0x498d086]
mov esi, 3
sub eax, 0x13
mov dword [esp + 0x18], esi
cmp eax, esi
jle 0x1002fd6f
mov cx, word [0x498d084]
movzx edx, cx
mov ebp, 3
mov dword [esp + 0x14], ebp
lea eax, [edx - 0x13]
cmp eax, ebp
jle 0x1002fd53
mov edi, dword [esp + 0x5c]
lea ebx, [esi + 0x200]
lea eax, [edi + 0x180000]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x4c]
shl eax, 0x12
mov dword [esp + 0x9c], eax
jmp 0x1002e896
mov eax, dword [0x498d06c]
imul ebp, ebx
add ebp, edi
lea ebp, [eax + ebp*8]
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, 0x55555555
imul edi
sub edx, edi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, ecx
add eax, ebx
lea ecx, [edi + eax*2]
add ecx, eax
shl ecx, 5
cmp word [esp + 0x10], 0
jne 0x1002e804
movsx eax, word [esp + ecx + 0x148]
movzx edx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, edx
jle 0x1002e741
mov esi, edx
test edx, edx
jle 0x1002e74b
mov eax, edx
mov dword [esp + 0x10], eax
movsx eax, word [esp + ecx + 0x14a]
movzx edx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, edx
jle 0x1002e761
mov esi, edx
movzx eax, word [esp + 0x10]
cmp eax, edx
jge 0x1002e770
mov eax, edx
mov dword [esp + 0x10], eax
movsx eax, word [esp + ecx + 0x14c]
movzx edx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, edx
jle 0x1002e786
mov esi, edx
movzx eax, word [esp + 0x10]
cmp eax, edx
jge 0x1002e795
mov eax, edx
mov dword [esp + 0x10], eax
movsx eax, word [esp + ecx + 0x14e]
movzx edx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, edx
jle 0x1002e7ab
mov esi, edx
movzx eax, word [esp + 0x10]
cmp eax, edx
jge 0x1002e7ba
mov eax, edx
mov dword [esp + 0x10], eax
movsx eax, word [esp + ecx + 0x150]
movzx edx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, edx
jle 0x1002e7d0
mov esi, edx
movzx eax, word [esp + 0x10]
cmp eax, edx
jge 0x1002e7df
mov eax, edx
mov dword [esp + 0x10], eax
movsx eax, word [esp + ecx + 0x152]
movzx ecx, word [ebp + eax*8 + 2]
movzx eax, si
cmp eax, ecx
jle 0x1002e7f5
mov esi, ecx
movzx eax, word [esp + 0x10]
cmp eax, ecx
jge 0x1002e804
mov eax, ecx
mov dword [esp + 0x10], eax
mov ax, word [esp + 0x10]
mov word [ebp + 6], ax
mov eax, dword [esp + 0x88]
movzx ecx, ax
mov eax, ebx
sub eax, ecx
mov word [ebp + 2], si
cdq
mov ecx, 3
idiv ecx
dec edx
je 0x1002e86b
dec edx
jne 0x1002e651
movzx eax, word [0x498d084]
add edi, 2
add dword [esp + 0x18], 2
sub eax, ecx
mov dword [esp + 0x10], edx
mov esi, 0xffff
cmp edi, eax
jge 0x1002e651
cmp ebx, 2
jle 0x1002e651
mov ecx, dword [esp + 0x14]
dec ebx
dec ecx
mov dword [esp + 0x14], ecx
jmp 0x1002e655
movzx eax, word [0x498d086]
sub eax, 3
cmp ebx, eax
jge 0x1002e651
mov ecx, dword [esp + 0x14]
inc ebx
mov eax, dword [esp + 0x18]
inc ecx
dec edi
mov dword [esp + 0x14], ecx
dec eax
jmp 0x1002e659
mov edi, dword [esp + 0x5c]
movzx eax, word [0x498d086]
add eax, 0xfffffffd
mov dword [esp + 0x10], eax
cmp ebx, eax
jge 0x1002e8ae
mov eax, ebx
mov dword [esp + 0x10], ebx
lea ecx, [ebp + 0x200]
add edx, 0xfffffffd
mov dword [esp + 0x24], ecx
cmp ecx, edx
jl 0x1002e8c5
mov ecx, edx
mov dword [esp + 0x24], edx
mov ebx, esi
cmp esi, eax
jge 0x1002e938
mov eax, dword [esp + 0x14]
mov ebp, edi
mov edx, dword [esp + 0x10]
mov dword [esp + 0x40], ebp
lea esp, [esp]
mov edi, eax
cmp eax, ecx
jge 0x1002e929
mov esi, ebp
jmp 0x1002e8f0
movzx edx, word [0x498d084]
lea esi, [esi + 6]
mov ecx, dword [0x498d06c]
imul edx, ebx
add edx, edi
inc edi
mov eax, dword [ecx + edx*8]
mov dword [esi - 6], eax
mov ax, word [ecx + edx*8 + 4]
mov ecx, dword [esp + 0x24]
mov word [esi - 2], ax
cmp edi, ecx
jl 0x1002e8f0
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
inc ebx
add ebp, 0xc00
mov dword [esp + 0x40], ebp
cmp ebx, edx
jl 0x1002e8e0
mov esi, dword [esp + 0x94]
mov edi, 3
mov ebp, dword [esp + 0x5c]
push 0x180000
push ebp
push esi
call fcn.10003cdd
add esp, 0xc
add esi, 0x180000
dec edi
jne 0x1002e948
mov eax, dword [esp + 0x18]
mov esi, eax
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x20], esi
cmp eax, ecx
jge 0x1002ebf9
mov eax, dword [esp + 0x24]
mov edi, edi
mov ebx, ebp
mov dword [esp + 0x40], ebx
cmp ebp, eax
jge 0x1002ebe8
lea eax, [esi + 6]
mov ebp, 6
cdq
idiv ebp
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x1c], ecx
lea eax, [ebx + 6]
cdq
idiv ebp
movsx eax, byte [edx + ecx + 0x498d520]
mov dword [esp + 0x30], eax
cmp eax, 1
je 0x1002ebcf
movzx ecx, word [0x498d084]
mov eax, dword [0x498d06c]
imul ecx, esi
add ecx, ebx
lea ebp, [eax + ecx*8]
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, 0x55555555
imul ebx
sub edx, ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, ecx
add eax, esi
lea ebx, [ebx + eax*2]
add ebx, eax
shl ebx, 5
movsx edi, word [esp + ebx + 0x14a]
movsx edx, word [esp + ebx + 0x148]
movzx eax, word [ebp + edi*8 + 2]
add edi, edi
movzx ecx, word [ebp + edx*8 + 2]
add edx, edx
add ecx, eax
imul esi, ecx, 0xae
movzx eax, word [ebp + edi*8 + 2]
movzx ecx, word [ebp + edx*8 + 2]
add ecx, eax
imul eax, ecx, 0x2e
mov ecx, dword [esp + 0x30]
movzx edi, word [ebp + ecx*2]
sub esi, eax
mov dword [esp + 0x108], esi
movsx esi, word [esp + ebx + 0x14c]
lea eax, [esi*4]
sub ecx, eax
movzx eax, word [ebp + ecx*2]
mov ecx, edi
sub ecx, eax
add edi, edi
movsx eax, word [esp + ebx + 0x14e]
imul edx, ecx, 0x5c
movzx ecx, word [ebp + esi*8 + 2]
movsx esi, word [esp + ebx + 0x150]
movzx eax, word [ebp + eax*8 + 2]
imul eax, eax, 0xdf
add edx, eax
mov eax, ecx
shl eax, 5
add eax, ecx
mov ecx, edi
add edx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10c], edx
lea edx, [esi + esi*2]
shl edx, 2
sub eax, edx
movzx eax, word [ebp + eax*2]
sub ecx, eax
mov eax, dword [esp + 0x30]
add eax, edx
movzx eax, word [ebp + eax*2]
sub ecx, eax
mov eax, ebp
mov edx, ecx
shl edx, 5
add edx, ecx
mov ecx, esi
shl ecx, 4
sub eax, ecx
movzx eax, word [eax + 2]
imul eax, eax, 0x5c
add edx, eax
movzx eax, word [ebp + esi*8 + 2]
imul eax, eax, 0xa4
movsx esi, word [esp + ebx + 0x152]
add edx, eax
mov dword [esp + 0x110], edx
mov edx, dword [esp + 0x30]
mov eax, edx
mov ebx, dword [esp + 0x40]
lea ecx, [esi + esi*2]
shl ecx, 2
sub eax, ecx
movzx eax, word [ebp + eax*2]
sub edi, eax
lea eax, [edx + ecx]
movzx eax, word [ebp + eax*2]
mov ecx, esi
sub edi, eax
shl ecx, 4
mov eax, ebp
mov edx, edi
sub eax, ecx
shl edx, 5
add edx, edi
movzx eax, word [eax + 2]
imul eax, eax, 0x5c
add edx, eax
movzx eax, word [ebp + esi*8 + 2]
imul eax, eax, 0xa4
xor esi, esi
add edx, eax
mov eax, dword [esp + 0x88]
movzx ecx, ax
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x114], edx
cdq
mov ecx, 3
idiv ecx
mov eax, edx
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x3c], eax
jmp 0x1002eb70
mov eax, dword [esp + esi*4 + 0x108]
movzx ecx, word [ebp + 6]
sar eax, 8
mov edi, eax
cmp eax, ecx
jl 0x1002eb86
mov edi, ecx
movzx edx, word [ebp + 2]
cmp edx, edi
jg 0x1002eb96
mov edx, eax
cmp eax, ecx
jl 0x1002eb96
mov edx, ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x5c]
xor eax, esi
shl eax, 9
inc esi
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x20]
shl eax, 9
sub eax, dword [esp + 0x14]
add eax, ebx
lea eax, [eax + eax*2]
mov word [ecx + eax*2 + 2], dx
cmp esi, 4
jl 0x1002eb70
mov esi, dword [esp + 0x20]
mov ebp, 6
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
inc ebx
mov dword [esp + 0x40], ebx
cmp ebx, eax
jl 0x1002e9a2
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
inc esi
mov dword [esp + 0x20], esi
cmp esi, ecx
jl 0x1002e980
mov eax, dword [esp + 0x18]
xor ebp, ebp
mov dword [esp + 0x3c], ebp
cmp dword [esp + 0x270], ebp
jle 0x1002f6c7
mov ecx, dword [esp + 0x88]
mov esi, dword [esp + 0x10]
movzx ebx, cx
mov ecx, eax
sub ecx, ebx
mov dword [esp + 0x38], ebx
add ecx, 4
mov eax, 0x55555556
imul ecx
mov eax, dword [esp + 0x18]
mov ecx, edx
add eax, 2
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x58], eax
lea edi, [ebx + ecx*2]
add edi, ecx
add esi, 0xfffffffe
mov dword [esp + 0x48], edi
mov dword [esp + 0x30], esi
mov edi, edi
cmp ebp, 1
jne 0x1002ec7a
mov eax, dword [esp + 0x6c]
push 0x600000
push dword [esp + 0x60]
add eax, 0x600000
push eax
mov dword [esp + 0x78], eax
call fcn.10003cdd
mov eax, dword [esp + 0x64]
add esp, 0xc
jmp 0x1002ec82
test ebp, ebp
je 0x1002ee68
mov ebp, eax
mov dword [esp + 0x20], ebp
cmp ebp, esi
jge 0x1002ee68
mov edx, dword [esp + 0x14]
lea ecx, [ebp + 6]
mov eax, dword [esp + 0x24]
add edx, 2
add eax, 0xfffffffe
mov dword [esp + 0x54], edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x60], ecx
lea ecx, [ecx]
mov edi, edx
cmp edi, eax
jge 0x1002ee52
mov eax, ecx
mov esi, 6
cdq
idiv esi
lea eax, [edi + 6]
mov dword [esp + 0x64], eax
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x50], ecx
cdq
idiv esi
movsx eax, byte [edx + ecx + 0x498d520]
mov dword [esp + 0x40], eax
cmp eax, 1
je 0x1002ee2e
movzx eax, word [0x498d084]
imul eax, ebp
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [0x498d06c]
mov dword [esp + 0x28], eax
mov eax, 0x55555556
imul ebp
mov eax, edx
shr eax, 0x1f
add eax, edx
lea esi, [eax + eax*2]
mov eax, 0x55555555
imul edi
sub edx, edi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub ecx, esi
lea esi, [esp + 0x158]
add ecx, ebp
lea eax, [edi + ecx*2]
add eax, ecx
mov ecx, 3
shl eax, 5
add esi, eax
mov dword [esp + 0x44], ecx
mov eax, ebp
mov dword [esp + 0x2c], esi
sub eax, ebx
mov ebx, ecx
cdq
idiv ebx
mov ebx, edx
neg ebx
sbb ebx, ebx
inc ebx
lea ebx, [ebx]
mov edx, dword [esp + 0x6c]
lea eax, [ecx - 2]
xor eax, ebx
movsx ecx, word [esi + ecx*2]
shl eax, 9
sub eax, dword [esp + 0x18]
add eax, ebp
shl eax, 9
lea esi, [ecx + ecx*2]
sub eax, dword [esp + 0x14]
add esi, esi
add eax, edi
lea eax, [eax + eax*2]
lea ebp, [edx + eax*2]
mov eax, dword [esp + 0x40]
movzx edx, word [esi + ebp + 2]
lea eax, [eax + ecx*2]
add eax, ecx
lea ecx, [ecx + ecx*2]
shl ecx, 2
movzx eax, word [ebp + eax*2]
sub edx, eax
mov eax, ebp
sub eax, ecx
movzx eax, word [eax + 2]
lea ecx, [eax + edx*2]
mov edx, dword [esp + 0x40]
mov eax, edx
sub eax, esi
mov esi, dword [esp + 0x1c]
movzx eax, word [ebp + eax*2]
sub ecx, eax
movzx eax, word [ebp + edx*2]
lea eax, [eax + eax*2]
add ecx, eax
mov eax, 0x55555556
imul ecx
mov ecx, dword [esp + 0x28]
mov eax, edx
shr eax, 0x1f
add eax, edx
movzx edx, word [ecx + esi*8 + 6]
mov dword [esp + 0x34], eax
cmp eax, edx
jl 0x1002edf0
mov dword [esp + 0x34], edx
movzx ecx, word [ecx + esi*8 + 2]
cmp ecx, dword [esp + 0x34]
jg 0x1002ee03
mov ecx, eax
cmp eax, edx
jl 0x1002ee03
mov ecx, edx
mov esi, dword [esp + 0x2c]
mov word [ebp + 2], cx
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x44], ecx
cmp ecx, 6
jl 0x1002ed60
mov ecx, dword [esp + 0x50]
mov esi, 6
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x64]
inc edi
inc eax
mov dword [esp + 0x64], eax
cmp edi, dword [esp + 0x68]
jl 0x1002ecd4
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x30]
inc ebp
inc ecx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x60], ecx
cmp ebp, esi
jl 0x1002ecb0
mov edi, dword [esp + 0x48]
cmp edi, esi
jge 0x1002f188
mov eax, dword [esp + 0x90]
lea ebx, [edi + 6]
mov ecx, dword [esp + 0x14]
movzx esi, ax
mov eax, 0x55555556
sub ecx, esi
sub edi, dword [esp + 0x18]
add ecx, 4
shl edi, 9
imul ecx
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x48]
mov eax, edx
sub edi, dword [esp + 0x14]
dec ecx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x74], edi
lea ebp, [esi + eax*2]
mov esi, dword [esp + 0x24]
add ebp, eax
add esi, 0xfffffffe
mov eax, 0xaaaaaaab
mov dword [esp + 0x34], ebp
mul ecx
mov dword [esp + 0x44], esi
mov eax, edx
shr eax, 1
inc eax
mov dword [esp + 0x50], eax
cmp ebp, esi
jge 0x1002f168
mov eax, ebx
mov ecx, 6
cdq
lea ebx, [ebp + 7]
idiv ecx
mov ecx, dword [esp + 0x6c]
lea eax, [edi + ebp]
lea eax, [eax + eax*2]
mov dword [esp + 0x64], ebx
lea ebp, [ecx + eax*2]
mov ecx, dword [esp + 0x44]
sub ecx, dword [esp + 0x34]
lea esi, [edx + edx*2]
dec ecx
mov dword [esp + 0x68], ebp
mov eax, 0xaaaaaaab
add esi, esi
mul ecx
mov dword [esp + 0x7c], esi
mov ecx, edx
shr ecx, 1
inc ecx
mov dword [esp + 0x40], ecx
mov eax, ebx
mov ecx, 6
cdq
idiv ecx
xor eax, eax
xor ebx, ebx
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
movsx edi, byte [edx + esi + 0x498d520]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov eax, 1
mov dword [esp + 0x20], eax
lea esp, [esp]
movzx esi, word [ebp + 2]
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, ebp
sub eax, ecx
add esi, esi
mov edx, esi
movzx ecx, word [ecx + ebp + 2]
movzx eax, word [eax + 2]
sub edx, ecx
sub edx, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], ecx
lea ecx, [eax + eax*2]
mov eax, edi
sub eax, ecx
movzx eax, word [ebp + eax*2]
mov dword [esp + 0x60], eax
lea eax, [ecx + edi]
movzx ecx, word [ebp + eax*2]
lea eax, [ebx + edi*8]
mov dword [esp + 0x1c], ecx
add ecx, dword [esp + 0x60]
add ecx, edx
mov dword [esp + eax*4 + 0xe8], ecx
cmp ebx, 1
jle 0x1002f001
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x28]
add eax, dword [esp + 0x2c]
imul eax, eax
imul edx, edx
add eax, edx
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fadd dword [esp + ebx*4 + 0xb0]
fstp dword [esp + ebx*4 + 0xb0]
mov edx, dword [esp + 0x20]
mov eax, ebp
add edx, edx
xor edi, 2
lea ecx, [edx + edx*2]
add ecx, ecx
sub eax, ecx
movzx ecx, word [ecx + ebp + 2]
movzx eax, word [eax + 2]
sub esi, ecx
sub esi, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov eax, edi
lea ecx, [edx + edx*2]
sub eax, ecx
movzx edx, word [ebp + eax*2]
lea eax, [ecx + edi]
movzx eax, word [ebp + eax*2]
mov dword [esp + 0x1c], eax
lea ecx, [eax + edx]
add ecx, esi
lea eax, [ebx + edi*8]
mov dword [esp + eax*4 + 0xe8], ecx
cmp ebx, 1
jle 0x1002f088
sub edx, dword [esp + 0x1c]
sub edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
add eax, edx
imul esi, esi
imul eax, eax
add eax, esi
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fadd dword [esp + ebx*4 + 0xb0]
fstp dword [esp + ebx*4 + 0xb0]
xor edi, 2
cmp ebx, 1
jle 0x1002f0c8
test bl, 1
je 0x1002f0c8
fld dword [esp + ebx*4 + 0xac]
fld dword [esp + ebx*4 + 0xb0]
fcompp
fnstsw ax
test ah, 0x41
jne 0x1002f0c8
mov eax, dword [esp + ebx*4 + 0xe4]
mov dword [esp + ebx*4 + 0xe8], eax
mov eax, dword [esp + ebx*4 + 0x124]
mov dword [esp + ebx*4 + 0x128], eax
cmp ebx, 2
jl 0x1002f0d2
test bl, 1
je 0x1002f116
lea esi, [esp + 0xe8]
xor ecx, ecx
lea esi, [esi + ebx*4]
mov edi, edi
mov eax, dword [esi]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x1002f0fd
test eax, eax
jns 0x1002f0f6
xor eax, eax
jmp 0x1002f102
cmp eax, 0xffff
jl 0x1002f102
mov eax, 0xffff
mov word [ebp + ecx*4], ax
add esi, 0x40
inc ecx
cmp ecx, 2
jl 0x1002f0e0
add ebp, 0x180000
mov eax, dword [esp + 0x20]
inc ebx
xor eax, 0x201
xor edi, 2
mov dword [esp + 0x20], eax
cmp ebx, 6
jl 0x1002ef70
mov ebp, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
add ebp, 0x12
mov esi, dword [esp + 0x7c]
add ebx, 3
dec dword [esp + 0x40]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x64], ebx
jne 0x1002ef20
mov edi, dword [esp + 0x74]
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x44]
add edi, 0x600
add ebx, 3
dec eax
mov dword [esp + 0x74], edi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], eax
jne 0x1002eed4
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
add eax, 0xfffffffd
lea ebp, [edx + 3]
cmp ebp, eax
jge 0x1002f40c
mov ebx, dword [esp + 0x14]
lea edx, [ebp + 6]
mov eax, dword [esp + 0x24]
mov esi, ebp
sub esi, dword [esp + 0x18]
mov edi, ebp
sub edi, dword [esp + 0x38]
add eax, 0xfffffffd
lea ecx, [ebx + 3]
shl esi, 9
sub esi, ebx
mov dword [esp + 0x70], ecx
mov ebx, dword [esp + 0x10]
add ebx, 0xfffffffd
mov dword [esp + 0x40], eax
sub ebx, ebp
mov dword [esp + 0x34], edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x68], ecx
cmp ecx, eax
jge 0x1002f3e1
mov eax, edx
mov ebp, 6
cdq
idiv ebp
lea eax, [ecx + 6]
mov dword [esp + 0x64], eax
lea ebx, [edx + edx*2]
add ebx, ebx
mov dword [esp + 0x8c], ebx
lea ebx, [ebx]
cdq
idiv ebp
movsx eax, byte [edx + ebx + 0x498d520]
mov ebx, 2
sub ebx, eax
mov dword [esp + 0x54], ebx
cmp ebx, 1
je 0x1002f3b6
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x6c]
lea eax, [eax + eax*2]
lea ebp, [ecx + eax*2]
mov eax, edi
cdq
mov ecx, 3
idiv ecx
mov dword [esp + 0x20], ebp
neg edx
sbb edi, edi
and edi, 0x1ff
inc edi
mov eax, edi
mov dword [esp + 0x50], edi
xor eax, 0x201
xor ecx, ecx
mov dword [esp + 0x74], ecx
lea edx, [eax + eax*2]
mov dword [esp + 0x60], edx
lea ecx, [ecx]
cmp ecx, 1
jg 0x1002f32b
mov eax, edi
xor eax, ecx
test al, 1
jne 0x1002f32b
movzx ebx, word [ebp + 2]
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x44], ebx
mov edx, ebx
mov eax, ebp
sub eax, ecx
movzx eax, word [eax + 2]
sub ebx, eax
mov eax, ebx
mov dword [esp + 0x98], ebx
sar eax, 0x1f
mov ebx, edx
mov dword [esp + 0x7c], eax
movzx eax, word [ecx + ebp + 2]
lea ecx, [edi + edi*2]
sub ebx, eax
add ecx, ecx
mov eax, ebp
mov edi, edx
sub eax, ecx
mov esi, ebx
sar esi, 0x1f
mov dword [esp + 0x84], esi
xor esi, ebx
mov ebx, dword [esp + 0x54]
movzx eax, word [eax + 2]
sub edi, eax
mov eax, dword [esp + 0x20]
mov ebp, edi
sar ebp, 0x1f
movzx eax, word [ecx + eax + 2]
sub edx, eax
mov eax, dword [esp + 0x7c]
xor eax, dword [esp + 0x98]
add esi, eax
mov dword [esp + 0x44], edx
sub esi, dword [esp + 0x84]
mov eax, ebp
sub esi, dword [esp + 0x7c]
xor eax, edi
mov edi, dword [esp + 0x50]
add esi, esi
sar edx, 0x1f
mov ecx, edx
xor ecx, dword [esp + 0x44]
add ecx, eax
mov eax, dword [esp + 0x60]
sub ecx, edx
sub ecx, ebp
mov ebp, dword [esp + 0x20]
cmp ecx, esi
jge 0x1002f32d
mov eax, edi
lea ecx, [eax + eax*2]
lea esi, [eax + eax*2]
lea eax, [ecx + ebx]
add esi, esi
movzx edx, word [ebp + eax*2]
mov eax, ebx
sub eax, ecx
movzx eax, word [ebp + eax*2]
add edx, eax
mov eax, ebp
sub eax, esi
movzx eax, word [eax + 2]
sub edx, eax
movzx eax, word [esi + ebp + 2]
sub edx, eax
movzx eax, word [ebp + 2]
lea eax, [edx + eax*2]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x1002f37b
test eax, eax
jns 0x1002f374
xor eax, eax
jmp 0x1002f380
cmp eax, 0xffff
jl 0x1002f380
mov eax, 0xffff
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x60]
inc ecx
mov word [ebp + ebx*2], ax
add ebp, 0x180000
mov dword [esp + 0x74], ecx
mov dword [esp + 0x20], ebp
cmp ecx, 4
jl 0x1002f270
mov ecx, dword [esp + 0x68]
mov ebp, 6
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x34]
mov eax, dword [esp + 0x64]
inc ecx
mov ebx, dword [esp + 0x8c]
inc eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x64], eax
cmp ecx, dword [esp + 0x40]
jl 0x1002f210
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
inc edx
add esi, 0x200
mov dword [esp + 0x2c], edx
inc edi
mov dword [esp + 0x28], esi
dec ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x1c], ebx
jne 0x1002f1e1
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
mov ebp, eax
mov dword [esp + 0x44], ebp
cmp ebp, esi
jge 0x1002f6a5
sub eax, dword [esp + 0x38]
mov ecx, ebp
mov ebx, dword [esp + 0x14]
sub ecx, edx
shl ecx, 9
mov edi, 3
sub ecx, ebx
mov dword [esp + 0x54], eax
mov dword [esp + 0x20], ecx
lea esp, [esp]
cdq
idiv edi
test edx, edx
je 0x1002f681
mov eax, dword [esp + 0x24]
add ebx, 2
add eax, 0xfffffffe
cmp ebx, eax
jge 0x1002f67d
mov eax, dword [esp + 0x90]
mov edx, ebx
mov esi, dword [esp + 0x24]
movzx eax, ax
sub edx, eax
mov dword [esp + 0x50], edx
mov eax, edx
cdq
idiv edi
test edx, edx
je 0x1002f664
lea eax, [ecx + ebx]
mov ecx, dword [esp + 0x6c]
lea eax, [eax + eax*2]
lea edi, [ecx + eax*2]
mov eax, 0x55555556
imul ebp
mov eax, edx
shr eax, 0x1f
add eax, edx
lea esi, [eax + eax*2]
mov eax, 0x55555555
imul ebx
sub edx, ebx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea edx, [esp + 0x158]
sub ecx, esi
add ecx, ebp
xor ebp, ebp
lea eax, [ebx + ecx*2]
add eax, ecx
shl eax, 5
add edx, eax
mov dword [esp + 0x34], edx
cmp dword [esp + 0x4c], ebp
jle 0x1002f653
jmp 0x1002f4e0
movzx eax, word [edx + ebp*2 + 2]
movsx ecx, ax
movzx eax, word [edx + ebp*2]
movsx edx, ax
mov dword [esp + 0x1c], 0
lea eax, [edx + ecx]
test eax, eax
je 0x1002f5a9
lea eax, [edx + edx*2]
mov edx, dword [esp + 0x34]
movzx esi, word [edi + eax*2 + 2]
lea eax, [ecx + ecx*2]
movzx eax, word [edi + eax*2 + 2]
neg esi
add esi, esi
movzx ecx, word [edx + ebp*2]
sub esi, eax
movzx eax, word [edi + 2]
lea eax, [eax + eax*2]
add esi, eax
movzx eax, word [edx + ebp*2 + 2]
cwde
lea eax, [eax + eax*2]
lea edx, [edi + eax*2]
movsx eax, cx
mov dword [esp + 0x2c], edx
lea eax, [eax + eax*2]
lea eax, [edi + eax*2]
mov dword [esp + 0x28], eax
movzx ecx, word [eax]
movzx eax, word [edx]
add eax, esi
lea ecx, [eax + ecx*2]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0xffff
jge 0x1002f575
test eax, eax
jns 0x1002f56e
xor eax, eax
jmp 0x1002f57a
cmp eax, 0xffff
jl 0x1002f57a
mov eax, 0xffff
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
add edx, 4
mov dword [esp + 0x2c], edx
mov word [edi + ecx*2], ax
add ecx, 2
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], eax
cmp ecx, 4
jl 0x1002f546
jmp 0x1002f63c
movzx esi, word [edi + 2]
lea eax, [ecx + ecx*2]
movzx eax, word [edi + eax*2 + 2]
add esi, esi
sub esi, eax
lea eax, [edx + edx*2]
movzx eax, word [edi + eax*2 + 2]
mov edx, dword [esp + 0x34]
sub esi, eax
movzx eax, word [edx + ebp*2]
movzx ecx, word [edx + ebp*2 + 2]
cwde
lea eax, [eax + eax*2]
lea edx, [edi + eax*2]
movsx eax, cx
mov dword [esp + 0x2c], edx
lea eax, [eax + eax*2]
lea eax, [edi + eax*2]
mov dword [esp + 0x28], eax
movzx ecx, word [edx]
movzx eax, word [eax]
add ecx, esi
add eax, ecx
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x1002f60d
test eax, eax
jns 0x1002f606
xor eax, eax
jmp 0x1002f612
cmp eax, 0xffff
jl 0x1002f612
mov eax, 0xffff
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
add edx, 4
mov dword [esp + 0x2c], edx
mov word [edi + ecx*2], ax
add ecx, 2
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], eax
cmp ecx, 4
jl 0x1002f5e8
mov edx, dword [esp + 0x34]
add ebp, 2
add edi, 0x180000
cmp ebp, dword [esp + 0x4c]
jl 0x1002f4e0
mov esi, dword [esp + 0x24]
mov edi, 3
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x50]
lea eax, [esi - 2]
inc ebx
inc edx
mov dword [esp + 0x50], edx
cmp ebx, eax
jl 0x1002f473
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x54]
inc ebp
inc eax
mov dword [esp + 0x44], ebp
add ecx, 0x200
mov dword [esp + 0x54], eax
mov dword [esp + 0x20], ecx
cmp ebp, esi
jl 0x1002f440
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
inc ebp
mov edi, dword [esp + 0x48]
mov dword [esp + 0x3c], ebp
cmp ebp, dword [esp + 0x270]
jl 0x1002ec50
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x24]
xor ebx, ebx
sub ecx, dword [esp + 0x18]
sub esi, dword [esp + 0x14]
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ebx
test edi, edi
jle 0x1002f91b
lea eax, [ecx - 2]
add ecx, 0xfffffffd
xor edi, edi
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ecx
mov edx, ecx
mov dword [esp + 0x38], edi
jmp 0x1002f710
mov ebp, 2
cmp eax, ebp
jle 0x1002f78e
mov ecx, dword [esp + 0x78]
lea edx, [esi - 2]
add ecx, 0x180c
mov dword [esp + 0x70], edx
mov dword [esp + 0x3c], ecx
mov edi, edi
cmp edx, 2
jle 0x1002f773
mov esi, dword [esp + 0x5c]
lea eax, [edi + ebp]
imul eax, eax, 0xc00
lea ebx, [edx - 2]
add esi, 0xc
mov edi, ecx
add esi, eax
lea esp, [esp]
push edi
push esi
call fcn.1000bd40
add esp, 8
add edi, 6
add esi, 6
dec ebx
jne 0x1002f750
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x70]
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x54]
inc ebp
add ecx, 0xc00
mov dword [esp + 0x3c], ecx
cmp ebp, eax
jl 0x1002f730
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x24]
mov eax, ebx
and eax, 3
movsx ecx, word [eax*2 + 0x487bdf8]
mov eax, 3
mov dword [esp + 0x84], ecx
mov dword [esp + 0x2c], eax
cmp edx, eax
jle 0x1002f8f6
add esi, 0xfffffffd
mov ebx, 0x2400
mov dword [esp + 0x8c], esi
mov dword [esp + 0x50], ebx
cmp esi, 3
jle 0x1002f8d7
mov ebp, dword [esp + 0x78]
lea edx, [ecx + ecx*2]
add eax, edi
add edx, edx
shl eax, 0xb
add eax, 0x18000c
mov dword [esp + 0x28], edx
add eax, ebp
lea ecx, [ebp + 0x12]
mov dword [esp + 0x3c], eax
add ebp, 0x12
lea eax, [edx + ebx]
add ecx, eax
mov eax, ebx
sub eax, edx
mov dword [esp + 0x48], ecx
add ebp, eax
lea eax, [esi - 3]
mov dword [esp + 0x1c], eax
jmp 0x1002f810
movsx ebx, word [edx + ebp]
lea ebp, [ebp + 6]
movsx edi, word [edx + ebp - 2]
add ebx, ebx
movsx eax, word [ebp - 6]
add edi, edi
sub ebx, eax
movsx eax, word [ecx]
sub ebx, eax
movsx eax, word [ebp - 2]
sub edi, eax
imul esi, ebx, 0x1f4
movsx eax, word [ecx + 4]
sub edi, eax
imul ebx, ebx
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
sub edi, eax
mov eax, dword [esp + 0x28]
imul edi, edi
movsx ecx, word [eax + ebp - 4]
movsx eax, word [ebp - 4]
add ecx, ecx
sub ecx, eax
mov eax, dword [esp + 0x48]
movsx eax, word [eax + 2]
sub ecx, eax
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
add ecx, edx
mov eax, edx
mov edx, dword [esp + 0x28]
shr eax, 0x1f
add eax, ecx
mov ecx, dword [esp + 0x48]
imul eax, eax
add ecx, 6
mov dword [esp + 0x48], ecx
add edi, eax
mov eax, dword [esp + 0x3c]
add edi, ebx
mov dword [esp + 0x70], edi
fild dword [esp + 0x70]
fstp dword [eax]
add eax, 4
dec dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
jne 0x1002f810
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x8c]
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x38]
inc eax
add ebx, 0xc00
mov dword [esp + 0x2c], eax
mov dword [esp + 0x50], ebx
cmp eax, edx
jl 0x1002f7c6
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x54]
inc ebx
mov esi, dword [esp + 0x24]
add edi, 0x200
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], edi
cmp ebx, dword [esp + 0x4c]
jl 0x1002f710
mov edi, dword [esp + 0x4c]
push dword [esp + 0x9c]
push 0
push dword [esp + 0x88]
call fcn.10003da1
mov ebx, dword [esp + 0x1c]
add esp, 0xc
lea eax, [ebx - 4]
cmp eax, 4
jle 0x1002fa60
lea ecx, [esi - 4]
mov ebx, 0x800
lea edx, [eax - 4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edx
lea ebx, [ebx]
mov eax, 4
mov dword [esp + 0x48], eax
cmp ecx, eax
jle 0x1002fa47
fld dword [0x4880e30]
mov ebp, dword [esp + 0x78]
fstp dword [esp + 0x30]
test edi, edi
jle 0x1002f9b6
add eax, ebx
lea ecx, [ebp + 0x180000]
mov edx, edi
lea ecx, [ecx + eax*4]
fld dword [esp + 0x30]
fld dword [ecx]
fcompp
fnstsw ax
test ah, 5
jp 0x1002f9a5
fld dword [ecx]
fstp dword [esp + 0x30]
add ecx, 0x100000
dec edx
jne 0x1002f990
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
fld dword [esp + 0x30]
fmul qword [0x48796c8]
fstp dword [esp + 0x30]
test edi, edi
jle 0x1002fa36
mov ecx, dword [esp + 0x80]
add eax, ebx
fld dword [esp + 0x30]
add ecx, eax
lea edi, [eax*4 + 0x17f7fc]
mov eax, dword [esp + 0x4c]
add edi, ebp
mov dword [esp + 0x3c], eax
mov esi, edi
mov ebp, 3
mov edx, esi
mov ebx, 3
fld dword [edx]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x1002fa03
inc byte [ecx]
add edx, 4
dec ebx
jne 0x1002f9f6
add esi, 0x800
dec ebp
jne 0x1002f9ef
add edi, 0x100000
add ecx, 0x40000
dec dword [esp + 0x3c]
jne 0x1002f9e8
mov eax, dword [esp + 0x48]
fstp st(0)
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x48], eax
cmp eax, ecx
jl 0x1002f971
mov edx, dword [esp + 0x2c]
add ebx, 0x200
dec edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], edx
jne 0x1002f960
mov ebx, dword [esp + 0x10]
movzx eax, word [0x498d086]
mov esi, dword [esp + 0x18]
sub eax, esi
cmp eax, 0x204
jge 0x1002fa77
lea ebx, [eax + 2]
mov cx, word [0x498d084]
mov ebp, dword [esp + 0x14]
movzx eax, cx
sub eax, ebp
cmp eax, 0x204
jge 0x1002fa97
lea edx, [eax + 2]
mov dword [esp + 0x24], edx
jmp 0x1002fa9b
mov edx, dword [esp + 0x24]
mov eax, esi
cmp esi, 8
jl 0x1002faa7
mov eax, 8
add ebx, 0xfffffff8
cmp eax, ebx
jge 0x1002fd35
mov ecx, eax
add esi, eax
shl ecx, 9
add edx, 0xfffffff8
sub ebx, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ebx
jmp 0x1002fad4
mov edi, dword [esp + 0x4c]
cmp ebp, 8
jge 0x1002fae1
mov ebx, ebp
mov dword [esp + 0x38], ebp
jmp 0x1002faea
mov ebx, 8
mov dword [esp + 0x38], ebx
cmp ebx, edx
jge 0x1002fd11
lea ebp, [edi - 4]
mov dword [esp + 0x1c], ebp
lea esp, [esp]
xor edx, edx
test edi, edi
jle 0x1002fb78
lea eax, [ecx + ebx]
mov ebx, dword [esp + 0x80]
add ebx, 0xfffffbfe
add ebx, eax
jmp 0x1002fb20
mov dword [esp + edx*4 + 0xc8], 0
xor ecx, ecx
mov edi, ebx
mov dword [esp + 0x3c], 5
jmp 0x1002fb40
mov esi, edi
mov ebp, 5
movsx eax, byte [esi]
lea esi, [esi + 1]
add ecx, eax
dec ebp
jne 0x1002fb47
add edi, 0x200
dec dword [esp + 0x3c]
jne 0x1002fb40
mov edi, dword [esp + 0x4c]
add ebx, 0x40000
mov dword [esp + edx*4 + 0xc8], ecx
inc edx
cmp edx, edi
jl 0x1002fb20
mov ebp, dword [esp + 0x1c]
xor eax, eax
test ebp, ebp
jle 0x1002fbb1
mov edi, edi
mov ecx, dword [esp + eax*4 + 0xd8]
mov edx, dword [esp + eax*4 + 0xc8]
cmp edx, ecx
jge 0x1002fb9f
mov dword [esp + eax*4 + 0xc8], 0
jmp 0x1002fbac
jle 0x1002fbac
mov dword [esp + eax*4 + 0xd8], 0
inc eax
cmp eax, ebp
jl 0x1002fb80
movzx eax, word [esp + 0xc8]
mov ecx, 1
mov dword [esp + 0x10], eax
mov bx, ax
cmp edi, ecx
jle 0x1002fbf0
lea esp, [esp]
movzx eax, bx
cmp eax, dword [esp + ecx*4 + 0xc8]
jge 0x1002fbeb
movzx eax, word [esp + ecx*4 + 0xc8]
mov dword [esp + 0x10], eax
mov bx, ax
inc ecx
cmp ecx, edi
jl 0x1002fbd0
xor edx, edx
mov ax, bx
shr ax, 3
mov ebp, edx
sub bx, ax
mov dword [esp + 0xa0], edx
mov edi, edx
mov dword [esp + 0xa4], ebp
xor esi, esi
mov dword [esp + 0xa8], edx
mov dword [esp + 0xac], edi
cmp dword [esp + 0x4c], edx
jle 0x1002fc84
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x5c]
movzx ebx, bx
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x4c]
add ecx, 4
cmp dword [esp + esi*4 + 0xc8], ebx
jl 0x1002fc64
movzx eax, word [ecx - 4]
add edx, eax
movzx eax, word [ecx - 2]
add ebp, eax
movzx eax, word [ecx]
add dword [esp + 0xa8], eax
inc edi
mov eax, dword [esp + 0x4c]
inc esi
add ecx, 0x180000
cmp esi, eax
jl 0x1002fc40
mov dword [esp + 0xa0], edx
mov dword [esp + 0xac], edi
mov dword [esp + 0xa4], ebp
mov eax, edx
mov esi, dword [esp + 0x28]
cdq
idiv edi
movzx edx, word [0x498d084]
mov ebx, dword [esp + 0x38]
mov ecx, dword [0x498d06c]
imul edx, esi
add edx, dword [esp + 0x14]
add edx, ebx
mov word [ecx + edx*8], ax
mov eax, ebp
cdq
idiv edi
movzx edx, word [0x498d084]
mov ebp, dword [esp + 0x14]
mov ecx, dword [0x498d06c]
imul edx, esi
add edx, ebp
add edx, ebx
mov word [ecx + edx*8 + 2], ax
mov eax, dword [esp + 0xa8]
cdq
idiv edi
movzx edx, word [0x498d084]
mov ecx, dword [0x498d06c]
imul edx, esi
add edx, ebp
add edx, ebx
inc ebx
mov dword [esp + 0x38], ebx
mov word [ecx + edx*8 + 4], ax
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
add edx, 0xfffffff8
cmp ebx, edx
jge 0x1002fd11
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x4c]
jmp 0x1002fb00
inc esi
add ecx, 0x200
dec dword [esp + 0x2c]
mov dword [esp + 0x28], esi
mov dword [esp + 0x20], ecx
jne 0x1002fad0
mov cx, word [0x498d084]
mov esi, dword [esp + 0x18]
movzx edx, cx
lea ebx, [esi + 0x200]
add ebp, 0x1f0
mov dword [esp + 0x14], ebp
lea eax, [edx - 0x13]
cmp ebp, eax
jl 0x1002e892
movzx eax, word [0x498d086]
add esi, 0x1f0
sub eax, 0x13
mov dword [esp + 0x18], esi
cmp esi, eax
jl 0x1002e6a2
push dword [esp + 0x5c]
call fcn.10037780
push 8
call fcn.10009e60
mov ecx, dword [esp + 0x270]
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10007d50
add esp, 0x25c
ret