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

Disassembly:
sub esp, 0xb4
push ebx
push ebp
mov eax, ecx
mov ebp, edx
push esi
xor ebx, ebx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], eax
push edi
test eax, eax
jne 0x1002e4b7
mov esi, ebx
mov dword [esp + 0x24], esi
jmp 0x1002e4ce
test al, 3
jne 0x1002e4af
push 0x4014
push ebx
push eax
call fcn.10061dc0
mov esi, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0xcc]
mov edx, 0x7e000000
mov edi, 0xff
mov dword [esp + 0xa4], edi
cmp ecx, edx
jbe 0x1002e4ee
mov eax, ebx
jmp 0x1002e4fd
mov eax, ecx
cdq
idiv edi
mov edx, 0x7e000000
add eax, 0x10
add eax, ecx
mov edi, dword [esp + 0xd0]
cmp edi, eax
jl 0x1002f2c7
cmp ecx, 0x1000b
jge 0x1002ea78
cmp ecx, edx
ja 0x100301a6
test ecx, ecx
jne 0x1002e535
mov eax, dword [esp + 0xc8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
jmp 0x100301a6
mov eax, dword [esi + 0x4000]
mov edx, ebp
add dword [esi + 0x4010], ecx
sub edx, eax
mov dword [esp + 0x20], edx
add eax, ecx
mov edx, ebp
mov dword [esi + 0x4000], eax
add ebp, ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x9c], ebp
mov dword [esi + 0x4004], 3
lea edi, [ebp - 0xb]
add ebp, 0xfffffffb
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0xc8]
mov dword [esp + 0x50], edi
cmp ecx, 0xd
jl 0x1002ea1c
push 4
pop edi
mov eax, edx
push edi
push eax
lea eax, [esp + 0xac]
push eax
call fcn.10061840
mov edx, dword [esp + 0x38]
mov ecx, edx
mov eax, dword [esp + 0x2c]
movzx eax, ax
sub ecx, eax
mov dword [esp + 0x8c], eax
imul eax, dword [esp + 0xb0], 0x9e3779b1
push edi
shr eax, 0x13
mov word [esi + eax*2], cx
lea eax, [edx + 1]
push eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0x74]
push eax
call fcn.10061840
add esp, 0x18
imul eax, dword [esp + 0x60], 0x9e3779b1
xor edx, edx
shr eax, 0x13
inc edx
mov dword [esp + 0x40], 0x40
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
sub dword [esp + 0x28], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x1c], ecx
add ecx, edx
mov edx, dword [esp + 0x40]
lea eax, [esi + eax*2]
mov dword [esp + 0x10], ecx
movzx esi, word [eax]
mov dword [esp + 0x38], eax
mov eax, edx
sar eax, 6
inc edx
mov dword [esp + 0xb4], eax
mov dword [esp + 0x40], edx
cmp ecx, dword [esp + 0x50]
ja 0x1002ea18
add esi, dword [esp + 0x20]
lea eax, [esp + 0x5c]
push edi
push ecx
push eax
mov dword [esp + 0x24], esi
call fcn.10061840
imul eax, dword [esp + 0x68], 0x9e3779b1
mov ecx, dword [esp + 0x44]
push edi
push esi
shr eax, 0x13
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x3c]
mov word [ecx], ax
lea eax, [esp + 0x58]
push eax
call fcn.10061840
mov esi, dword [esp + 0x5c]
lea eax, [esp + 0x70]
push edi
push dword [esp + 0x38]
push eax
call fcn.10061840
mov eax, dword [esp + 0x58]
add esp, 0x24
mov edx, dword [esp + 0xb4]
cmp esi, dword [esp + 0x58]
jne 0x1002e5f0
mov edx, dword [esp + 0x14]
cmp edx, dword [esp + 0x68]
mov esi, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
cmp dword [esp + 0x2c], esi
sbb eax, eax
neg eax
test eax, ecx
je 0x1002e6ed
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
dec esi
lea ecx, [edi - 1]
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x1002e6e8
cmp edx, ecx
mov dword [esp + 0x18], esi
mov edi, ecx
sbb ecx, ecx
mov dword [esp + 0x1c], edi
neg ecx
cmp ebx, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x1002e6c4
push 4
xor ebx, ebx
pop edi
mov ecx, dword [esp + 0x1c]
mov esi, ebp
sub ecx, edx
mov dword [esp + 0x34], esi
inc ebp
mov dword [esp + 0x68], ecx
cmp ecx, 0xf
jb 0x1002e747
lea eax, [ecx - 0xf]
mov byte [esi], 0xf0
mov esi, 0xff
mov dword [esp + 0x28], eax
cmp eax, esi
jl 0x1002e741
mov ecx, esi
xor edx, edx
div ecx
mov esi, eax
push esi
push ecx
push ebp
call fcn.10061dc0
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, dword [esp + 0x68]
add ebp, esi
imul eax, esi, 0xffffff01
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov byte [ebp], al
inc ebp
jmp 0x1002e74e
mov al, cl
shl al, 4
mov byte [esi], al
sub edx, ebp
lea esi, [ecx + ebp]
mov dword [esp + 0x14], edx
push 8
lea eax, [edx + ebp]
push eax
push ebp
call fcn.10061840
mov edx, dword [esp + 0x20]
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x1002e757
mov eax, dword [esp + 0x30]
mov ebp, esi
add eax, 0xfffffffd
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x18]
lea eax, [ebp + 2]
mov dword [esp + 0x10], eax
mov ecx, ebp
mov eax, dword [esp + 0x1c]
sub eax, esi
movzx edx, ax
call fcn.1002e434
mov ebp, dword [esp + 0x1c]
lea ecx, [esi + 4]
mov eax, dword [esp + 0x28]
add ebp, 4
mov dword [esp + 0x14], ecx
mov dword [esp + 0x40], ebp
cmp ebp, eax
jae 0x1002e83e
push edi
push ecx
lea eax, [esp + 0x98]
push eax
call fcn.10061840
mov esi, dword [esp + 0x9c]
lea eax, [esp + 0x78]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0x84]
add esp, 0x18
xor ecx, esi
jne 0x1002e87c
mov ecx, dword [esp + 0x14]
add ebp, edi
mov eax, dword [esp + 0x28]
add ecx, edi
mov dword [esp + 0x14], ecx
cmp ebp, eax
jae 0x1002e83e
push edi
push ecx
lea eax, [esp + 0x78]
push eax
call fcn.10061840
mov esi, dword [esp + 0x7c]
lea eax, [esp + 0x80]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0x8c]
add esp, 0x18
xor ecx, esi
jne 0x1002e883
mov ecx, dword [esp + 0x14]
add ebp, edi
add ecx, edi
mov dword [esp + 0x14], ecx
cmp ebp, dword [esp + 0x28]
jb 0x1002e7ff
mov eax, dword [esp + 0x30]
dec eax
cmp ebp, eax
jae 0x1002e890
push 2
push ecx
lea eax, [esp + 0x54]
push eax
call fcn.10061840
movzx esi, word [esp + 0x58]
lea eax, [esp + 0x54]
push 2
push ebp
push eax
call fcn.10061840
mov eax, dword [esp + 0x2c]
add esp, 0x18
cmp si, word [esp + 0x48]
jne 0x1002e894
add ebp, 2
add eax, 2
jmp 0x1002e894
call fcn.1002e44f
jmp 0x1002e8a8
call fcn.1002e44f
sub ebp, dword [esp + 0x40]
add eax, ebp
jmp 0x1002e8a8
mov eax, dword [esp + 0x14]
cmp ebp, dword [esp + 0x30]
jae 0x1002e8a2
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1002e8a2
inc ebp
mov eax, ebp
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
add ecx, 4
add ecx, eax
mov dword [esp + 0x1c], ecx
mov cl, byte [edx]
cmp eax, 0xf
jb 0x1002e932
or dword [esp + 0x78], 0xffffffff
sub eax, 0xf
mov dword [esp + 0x68], eax
add cl, 0xf
push edi
lea eax, [esp + 0x7c]
mov byte [edx], cl
push eax
push dword [esp + 0x18]
call fcn.10061840
mov esi, dword [esp + 0x74]
mov ecx, 0x3fc
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov ebp, eax
cmp esi, ecx
jb 0x1002e91f
mov eax, esi
xor edx, edx
div ecx
mov ebx, eax
or dword [esp + 0x7c], 0xffffffff
lea eax, [esp + 0x7c]
push edi
push eax
add ebp, edi
push ebp
call fcn.10061840
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1002e8fe
xor edx, edx
mov eax, esi
mov ecx, 0xff
div ecx
add ebp, eax
mov byte [ebp], dl
inc ebp
jmp 0x1002e93a
mov ebp, dword [esp + 0x10]
add al, cl
mov byte [edx], al
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
cmp edx, dword [esp + 0x50]
jae 0x1002ea1c
lea esi, [edx - 2]
push edi
lea eax, [esp + 0x88]
push esi
push eax
call fcn.10061840
imul eax, dword [esp + 0x90], 0x9e3779b1
mov ecx, dword [esp + 0x30]
sub esi, dword [esp + 0x8c]
push edi
push dword [esp + 0x2c]
shr eax, 0x13
mov word [ecx + eax*2], si
lea eax, [esp + 0x9c]
push eax
call fcn.10061840
imul edx, dword [esp + 0xa0], 0x9e3779b1
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x38]
push edi
shr edx, 0x13
movzx eax, word [esi + edx*2]
add eax, dword [esp + 0x3c]
push eax
mov dword [esp + 0x38], eax
lea eax, [esp + 0x74]
push eax
mov word [esi + edx*2], cx
call fcn.10061840
mov esi, dword [esp + 0x78]
lea eax, [esp + 0xb0]
push edi
push dword [esp + 0x44]
push eax
call fcn.10061840
add esp, 0x30
cmp esi, dword [esp + 0x8c]
jne 0x1002e9f3
mov eax, ebp
inc ebp
mov dword [esp + 0x34], eax
mov byte [eax], bl
jmp 0x1002e77e
mov eax, dword [esp + 0x14]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0x6c]
push eax
call fcn.10061840
add esp, 0xc
imul eax, dword [esp + 0x64], 0x9e3779b1
jmp 0x1002e5e2
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x9c]
lea esi, [ebp + 1]
sub ebx, edx
cmp ebx, 0xf
jb 0x1002ea63
mov byte [ebp], 0xf0
lea eax, [ebx - 0xf]
mov ebp, 0xff
cmp eax, ebp
jb 0x1002ea5e
xor edx, edx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.10061dc0
add esp, 0xc
lea eax, [ebx - 0xf]
add esi, edi
sub eax, ebp
sub edi, 1
jne 0x1002ea53
mov edx, dword [esp + 0x14]
mov byte [esi], al
inc esi
jmp 0x1002ea6b
mov al, bl
shl al, 4
mov byte [ebp], al
push ebx
push edx
mov eax, 0xffff
cmp eax, ebp
sbb edi, edi
add edi, 2
mov dword [esp + 0x30], edi
cmp ecx, edx
ja 0x100301a6
mov eax, dword [esi + 0x4000]
mov edx, ebp
add dword [esi + 0x4010], ecx
sub edx, eax
push 4
mov dword [esi + 0x4004], edi
pop edi
mov dword [esp + 0x64], eax
add eax, ecx
mov dword [esp + 0x1c], edx
lea edx, [ecx + ebp]
push edi
push dword [esp + 0x30]
mov dword [esp + 0x28], ebp
lea ebp, [edx - 0xb]
mov dword [esi + 0x4000], eax
lea eax, [esp + 0xa4]
mov dword [esp + 0xc0], edx
add edx, 0xfffffffb
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0xd0]
push eax
mov dword [esp + 0x64], edx
call fcn.10061840
imul ecx, dword [esp + 0xa8], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1002eb2a
sub eax, 1
je 0x1002ec6a
sub eax, 1
je 0x1002ec5e
sub eax, 1
mov eax, dword [esp + 0x2c]
jne 0x1002eb2e
sub eax, dword [esp + 0x1c]
mov word [esi + ecx*2], ax
mov eax, dword [esp + 0x2c]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0x6c]
push eax
call fcn.10061840
imul edx, dword [esp + 0x70], 0x9e3779b1
mov eax, dword [esp + 0x64]
mov dword [esi + ecx*4], eax
jmp 0x1002eb2a
mov eax, dword [esp + 0x2c]
mov dword [esi + ecx*4], eax
jmp 0x1002eb2e
cmp ecx, 0x1000b
jge 0x1002f8e5
cmp ecx, edx
ja 0x100301a6
test ecx, ecx
jne 0x1002f2ec
test edi, edi
jle 0x100301a6
jmp 0x1002e524
mov eax, dword [esi + 0x4000]
mov edx, ebp
sub edx, eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x10], edx
add eax, ecx
lea edx, [ecx + ebp]
lea ebp, [edx - 0xb]
mov dword [esp + 0x30], edx
mov dword [esp + 0x50], ebp
lea ebp, [edx - 5]
mov dword [esp + 0x58], ebp
mov ebp, dword [esp + 0xc8]
mov esi, ebp
add esi, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
add dword [esi + 0x4010], ecx
mov dword [esi + 0x4000], eax
mov dword [esi + 0x4004], 3
cmp ecx, 0xd
jl 0x1002f8c6
push 4
pop edi
push edi
push dword [esp + 0x30]
lea eax, [esp + 0xc0]
push eax
call fcn.10061840
mov edx, dword [esp + 0x38]
mov ecx, edx
mov eax, dword [esp + 0x1c]
movzx eax, ax
sub ecx, eax
mov dword [esp + 0x88], eax
imul eax, dword [esp + 0xc4], 0x9e3779b1
push edi
shr eax, 0x13
mov word [esi + eax*2], cx
lea eax, [edx + 1]
push eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0xb4]
push eax
call fcn.10061840
add esp, 0x18
imul eax, dword [esp + 0xa0], 0x9e3779b1
xor edx, edx
shr eax, 0x13
inc edx
mov dword [esp + 0x38], 0x40
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x44], ecx
sub dword [esp + 0x44], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x14], ecx
add ecx, edx
mov edx, dword [esp + 0x38]
lea eax, [esi + eax*2]
mov dword [esp + 0x18], ecx
movzx esi, word [eax]
mov dword [esp + 0x3c], eax
mov eax, edx
sar eax, 6
inc edx
mov dword [esp + 0x94], eax
mov dword [esp + 0x38], edx
cmp ecx, dword [esp + 0x50]
ja 0x1002f855
add esi, dword [esp + 0x10]
lea eax, [esp + 0xb0]
push edi
push ecx
push eax
mov dword [esp + 0x2c], esi
call fcn.10061840
imul eax, dword [esp + 0xbc], 0x9e3779b1
mov ecx, dword [esp + 0x48]
push edi
push esi
shr eax, 0x13
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x58]
mov word [ecx], ax
lea eax, [esp + 0xc0]
push eax
call fcn.10061840
mov esi, dword [esp + 0xc4]
lea eax, [esp + 0xc0]
push edi
push dword [esp + 0x30]
push eax
call fcn.10061840
mov eax, dword [esp + 0xbc]
add esp, 0x24
mov edx, dword [esp + 0x94]
cmp esi, dword [esp + 0xa8]
jne 0x1002f3ba
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
sbb ecx, ecx
neg ecx
cmp esi, dword [esp + 0x9c]
sbb eax, eax
neg eax
test eax, ecx
je 0x1002f4dd
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x2c]
dec edi
lea edx, [ebx - 1]
mov al, byte [edx]
cmp al, byte [edi]
jne 0x1002f4d4
cmp ebp, edi
mov dword [esp + 0x20], edi
mov ebx, edx
sbb ecx, ecx
mov dword [esp + 0x14], ebx
neg ecx
cmp esi, edx
sbb eax, eax
neg eax
test eax, ecx
jne 0x1002f4b0
mov ebp, dword [esp + 0x28]
xor ebx, ebx
push 4
pop edi
mov ecx, dword [esp + 0x14]
xor edx, edx
sub ecx, esi
mov dword [esp + 0x18], ebp
mov eax, ecx
mov dword [esp + 0x98], ecx
div dword [esp + 0xa4]
inc ebp
add eax, 8
add eax, ecx
add eax, ebp
cmp eax, dword [esp + 0x34]
ja 0x100301a6
mov edi, dword [esp + 0x18]
cmp ecx, 0xf
jb 0x1002f559
lea edx, [ecx - 0xf]
mov byte [edi], 0xf0
mov edi, 0xff
mov dword [esp + 0x3c], edx
cmp edx, edi
jl 0x1002f553
mov eax, edx
xor edx, edx
div edi
mov esi, eax
push esi
push edi
push ebp
call fcn.10061dc0
mov edx, dword [esp + 0x48]
add ebp, esi
mov ecx, dword [esp + 0xa4]
add esp, 0xc
imul eax, esi, 0xffffff01
mov esi, dword [esp + 0x1c]
add edx, eax
mov byte [ebp], dl
inc ebp
jmp 0x1002f560
mov al, cl
shl al, 4
mov byte [edi], al
lea edi, [ecx + ebp]
sub esi, ebp
mov dword [esp + 0x3c], edi
push 8
lea eax, [esi + ebp]
push eax
push ebp
call fcn.10061840
add ebp, 8
add esp, 0xc
cmp ebp, edi
jb 0x1002f569
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x3c]
add eax, 0xfffffffd
push 4
pop edi
mov dword [esp + 0x44], eax
mov esi, dword [esp + 0x20]
lea eax, [ebp + 2]
mov dword [esp + 0x40], eax
mov ecx, ebp
mov eax, dword [esp + 0x14]
sub eax, esi
movzx edx, ax
call fcn.1002e434
mov ebp, dword [esp + 0x14]
lea ecx, [esi + 4]
mov eax, dword [esp + 0x44]
add ebp, 4
mov dword [esp + 0x20], ecx
mov dword [esp + 0x38], ebp
cmp ebp, eax
jae 0x1002f64e
push edi
push ecx
lea eax, [esp + 0x6c]
push eax
call fcn.10061840
mov esi, dword [esp + 0x70]
lea eax, [esp + 0x98]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0xa4]
add esp, 0x18
xor ecx, esi
jne 0x1002f68c
mov ecx, dword [esp + 0x20]
add ebp, edi
mov eax, dword [esp + 0x44]
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, eax
jae 0x1002f64e
push edi
push ecx
lea eax, [esp + 0x5c]
push eax
call fcn.10061840
mov esi, dword [esp + 0x60]
lea eax, [esp + 0x94]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0xa0]
add esp, 0x18
xor ecx, esi
jne 0x1002f695
mov ecx, dword [esp + 0x20]
add ebp, edi
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, dword [esp + 0x44]
jb 0x1002f60f
mov eax, dword [esp + 0x58]
dec eax
cmp ebp, eax
jae 0x1002f6a3
push 2
push ecx
lea eax, [esp + 0x50]
push eax
call fcn.10061840
movzx esi, word [esp + 0x54]
lea eax, [esp + 0x58]
push 2
push ebp
push eax
call fcn.10061840
mov eax, dword [esp + 0x38]
add esp, 0x18
cmp si, word [esp + 0x4c]
jne 0x1002f6a7
add ebp, 2
add eax, 2
jmp 0x1002f6a7
call fcn.1002e44f
mov ecx, eax
jmp 0x1002f6bb
call fcn.1002e44f
sub ebp, dword [esp + 0x38]
lea ecx, [eax + ebp]
jmp 0x1002f6bb
mov eax, dword [esp + 0x20]
cmp ebp, dword [esp + 0x58]
jae 0x1002f6b5
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1002f6b5
inc ebp
mov ecx, ebp
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
xor edx, edx
add eax, 4
mov ebp, 0xff
add eax, ecx
mov dword [esp + 0x14], eax
lea eax, [ecx + 0xf0]
div ebp
mov ebp, dword [esp + 0x40]
add eax, 6
add eax, ebp
cmp eax, dword [esp + 0x34]
ja 0x100301a6
mov edx, dword [esp + 0x18]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x1002f769
or dword [esp + 0x84], 0xffffffff
add al, 0xf
mov byte [edx], al
sub ecx, 0xf
push edi
lea eax, [esp + 0x88]
mov dword [esp + 0x40], ecx
push eax
push ebp
call fcn.10061840
mov esi, dword [esp + 0x48]
mov ecx, 0x3fc
add esp, 0xc
cmp esi, ecx
jb 0x1002f756
mov eax, esi
xor edx, edx
div ecx
mov ebx, eax
or dword [esp + 0x80], 0xffffffff
lea eax, [esp + 0x80]
push edi
push eax
add ebp, edi
push ebp
call fcn.10061840
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1002f72f
xor edx, edx
mov eax, esi
mov ecx, 0xff
div ecx
add ebp, eax
mov byte [ebp], dl
inc ebp
jmp 0x1002f76d
add al, cl
mov byte [edx], al
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x1c], ecx
cmp ecx, dword [esp + 0x50]
jae 0x1002f859
lea esi, [ecx - 2]
push edi
lea eax, [esp + 0x7c]
push esi
push eax
call fcn.10061840
imul eax, dword [esp + 0x84], 0x9e3779b1
mov ecx, dword [esp + 0x30]
sub esi, dword [esp + 0x88]
push edi
push dword [esp + 0x24]
shr eax, 0x13
mov word [ecx + eax*2], si
lea eax, [esp + 0x88]
push eax
call fcn.10061840
imul edx, dword [esp + 0x8c], 0x9e3779b1
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x28]
push edi
shr edx, 0x13
movzx eax, word [esi + edx*2]
add eax, dword [esp + 0x2c]
push eax
mov dword [esp + 0x40], eax
lea eax, [esp + 0x90]
push eax
mov word [esi + edx*2], cx
call fcn.10061840
mov esi, dword [esp + 0x94]
lea eax, [esp + 0x90]
push edi
push dword [esp + 0x3c]
push eax
call fcn.10061840
add esp, 0x30
cmp esi, dword [esp + 0x6c]
jne 0x1002f82a
mov eax, ebp
inc ebp
mov dword [esp + 0x18], eax
mov byte [eax], bl
jmp 0x1002f591
mov eax, dword [esp + 0x1c]
inc eax
push edi
push eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x98]
push eax
call fcn.10061840
add esp, 0xc
imul eax, dword [esp + 0x90], 0x9e3779b1
jmp 0x1002f3ac
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
sub edx, ecx
mov esi, 0xff
mov dword [esp + 0x30], edx
lea eax, [edx + 0xf0]
xor edx, edx
div esi
mov edx, dword [esp + 0x30]
inc eax
add eax, edx
add eax, ebp
cmp eax, dword [esp + 0x34]
ja 0x100301a6
lea esi, [ebp + 1]
cmp edx, 0xf
jb 0x1002f8cc
mov byte [ebp], 0xf0
lea ebx, [edx - 0xf]
mov ebp, 0xff
cmp ebx, ebp
jb 0x1002f8c1
xor edx, edx
mov eax, ebx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.10061dc0
add esp, 0xc
add esi, edi
sub ebx, ebp
sub edi, 1
jne 0x1002f8b2
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
mov byte [esi], bl
inc esi
jmp 0x1002f8d4
mov ecx, dword [esp + 0x1c]
jmp 0x1002f85d
mov al, dl
shl al, 4
mov byte [ebp], al
push edx
push ecx
push esi
call fcn.10061840
mov ebx, dword [esp + 0x3c]
jmp 0x1003019a
mov eax, 0xffff
cmp eax, ebp
sbb eax, eax
add eax, 2
mov dword [esp + 0x30], eax
cmp ecx, edx
ja 0x100301a6
mov eax, dword [esi + 0x4000]
mov edx, ebp
add dword [esi + 0x4010], ecx
sub edx, eax
mov dword [esp + 0x14], edx
lea edx, [ecx + ebp]
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], ebp
lea ebp, [edx - 0xb]
add edx, 0xfffffffb
mov dword [esp + 0xa0], eax
mov dword [esp + 0x58], edx
add eax, ecx
mov edx, dword [esp + 0xc8]
push 4
mov dword [esp + 0x54], ebp
mov ebp, edx
add edx, edi
mov dword [esi + 0x4000], eax
mov eax, dword [esp + 0x34]
pop edi
push edi
push dword [esp + 0x30]
mov dword [esi + 0x4004], eax
lea eax, [esp + 0xc0]
push eax
mov dword [esp + 0x4c], edx
call fcn.10061840
imul ecx, dword [esp + 0xc4], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1002f9a3
sub eax, 1
je 0x1002faec
sub eax, 1
je 0x1002fadd
sub eax, 1
mov eax, dword [esp + 0x2c]
jne 0x1002f9a7
sub eax, dword [esp + 0x14]
mov word [esi + ecx*2], ax
mov eax, dword [esp + 0x2c]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0xa8]
push eax
call fcn.10061840
imul edx, dword [esp + 0xac], 0x9e3779b1
mov ecx, dword [esp + 0x1c]
add esp, 0xc
shr edx, 0x14
cmp dword [esp + 0x2c], 0xffff
jbe 0x1002fb1c
xor eax, eax
mov dword [esp + 0x34], 0x40
inc eax
mov esi, dword [esp + 0x24]
mov dword [esp + 0x10], ecx
add ecx, eax
mov eax, dword [esp + 0x34]
sar eax, 6
inc dword [esp + 0x34]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x5c], eax
cmp ecx, dword [esp + 0x50]
ja 0x1003011d
lea eax, [esi + edx*4]
mov dword [esp + 0x38], eax
mov eax, dword [eax]
push edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb4]
push ecx
push eax
call fcn.10061840
imul edx, dword [esp + 0xbc], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr edx, 0x14
mov dword [esp + 0x44], edx
sub eax, ebx
je 0x1002fa74
sub eax, 1
je 0x1002fb0d
sub eax, 1
je 0x1002faf8
sub eax, 1
jne 0x1002fa74
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
mov word [esi + ecx*2], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
add eax, 0xffff
cmp eax, ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
jb 0x1002f9e9
push edi
push dword [esp + 0x20]
lea eax, [esp + 0xb4]
push eax
call fcn.10061840
mov esi, dword [esp + 0xb8]
lea eax, [esp + 0xb4]
push edi
push dword [esp + 0x20]
push eax
call fcn.10061840
mov edx, dword [esp + 0x5c]
add esp, 0x18
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
cmp esi, dword [esp + 0xa8]
jne 0x1002f9e9
jmp 0x1002fc1e
mov eax, dword [esp + 0xa0]
mov dword [esi + ecx*4], eax
jmp 0x1002f9a3
mov eax, dword [esp + 0x2c]
mov dword [esi + ecx*4], eax
jmp 0x1002f9a7
mov ecx, dword [esp + 0x10]
mov eax, ecx
mov esi, dword [esp + 0x38]
sub eax, dword [esp + 0x14]
mov dword [esi], eax
jmp 0x1002fa78
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
jmp 0x1002fa78
mov dword [esp + 0x5c], 1
mov dword [esp + 0x38], 0x40
mov esi, dword [esp + 0x24]
mov eax, ecx
sub eax, dword [esp + 0x14]
mov dword [esp + 0x34], eax
mov dword [esp + 0x3c], edx
lea eax, [esi + edx*4]
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x38]
add ecx, dword [esp + 0x5c]
mov dword [esp + 0x94], eax
mov eax, dword [eax]
mov dword [esp + 0x18], eax
mov eax, edx
sar eax, 6
inc edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x38], edx
cmp ecx, dword [esp + 0x50]
ja 0x1003011d
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x14]
push edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0x9c]
push ecx
push eax
call fcn.10061840
imul edx, dword [esp + 0xa4], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
shr edx, 0x14
dec eax
mov dword [esp + 0x44], edx
sub eax, 1
je 0x1002fbc3
sub eax, 1
jne 0x1002fbcc
mov eax, dword [esp + 0x3c]
mov word [esi + eax*2], cx
jmp 0x1002fbcc
mov eax, dword [esp + 0x94]
mov dword [eax], ecx
mov eax, dword [esp + 0x18]
add eax, 0xffff
cmp eax, ecx
mov ecx, dword [esp + 0x60]
jb 0x1002fb2c
push edi
push dword [esp + 0x20]
lea eax, [esp + 0xa4]
push eax
call fcn.10061840
mov esi, dword [esp + 0xa8]
lea eax, [esp + 0x70]
push edi
push dword [esp + 0x20]
push eax
call fcn.10061840
mov edx, dword [esp + 0x5c]
add esp, 0x18
mov ecx, dword [esp + 0x60]
cmp esi, dword [esp + 0x64]
jne 0x1002fb2c
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x2c], edx
mov esi, dword [esp + 0x10]
sbb ecx, ecx
neg ecx
cmp dword [esp + 0x20], esi
sbb eax, eax
neg eax
test eax, ecx
je 0x1002fc68
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov al, byte [esi - 1]
dec edx
cmp al, byte [edx]
jne 0x1002fc5f
dec esi
mov dword [esp + 0x1c], edx
cmp ebx, edx
sbb ecx, ecx
neg ecx
cmp edi, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x1002fc42
push 4
mov dword [esp + 0x14], esi
xor ebx, ebx
pop edi
mov ecx, esi
mov dword [esp + 0x18], ebp
sub ecx, dword [esp + 0x20]
xor edx, edx
mov eax, ecx
mov dword [esp + 0x94], ecx
div dword [esp + 0xa4]
inc ebp
add eax, 8
add eax, ecx
add eax, ebp
cmp eax, dword [esp + 0x40]
ja 0x100301a6
cmp ecx, 0xf
jb 0x1002fce0
mov eax, dword [esp + 0x18]
lea edx, [ecx - 0xf]
mov edi, 0xff
mov dword [esp + 0x3c], edx
mov byte [eax], 0xf0
cmp edx, edi
jl 0x1002fcda
mov eax, edx
xor edx, edx
div edi
mov esi, eax
push esi
push edi
push ebp
call fcn.10061dc0
mov edx, dword [esp + 0x48]
add esp, 0xc
mov ecx, dword [esp + 0x94]
add ebp, esi
imul eax, esi, 0xffffff01
add edx, eax
mov byte [ebp], dl
inc ebp
jmp 0x1002fceb
mov edx, dword [esp + 0x18]
mov al, cl
shl al, 4
mov byte [edx], al
mov edi, dword [esp + 0x20]
lea esi, [ecx + ebp]
mov dword [esp + 0x3c], esi
sub edi, ebp
push 8
lea eax, [edi + ebp]
push eax
push ebp
call fcn.10061840
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x1002fcf8
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x3c]
add eax, 0xfffffffd
push 4
pop edi
mov dword [esp + 0x34], eax
mov esi, dword [esp + 0x10]
lea eax, [ebp + 2]
mov ecx, ebp
mov dword [esp + 0x5c], eax
mov eax, esi
sub eax, dword [esp + 0x1c]
movzx edx, ax
call fcn.1002e434
mov ecx, dword [esp + 0x1c]
lea ebp, [esi + 4]
mov eax, dword [esp + 0x34]
add ecx, 4
mov dword [esp + 0x20], ecx
mov dword [esp + 0x60], ebp
cmp ebp, eax
jae 0x1002fde3
push edi
push ecx
lea eax, [esp + 0x94]
push eax
call fcn.10061840
mov esi, dword [esp + 0x98]
lea eax, [esp + 0x60]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0x6c]
add esp, 0x18
xor ecx, esi
jne 0x1002fe21
mov ecx, dword [esp + 0x20]
add ebp, edi
mov eax, dword [esp + 0x34]
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, eax
jae 0x1002fde3
push edi
push ecx
lea eax, [esp + 0x90]
push eax
call fcn.10061840
mov esi, dword [esp + 0x94]
lea eax, [esp + 0x90]
push edi
push ebp
push eax
call fcn.10061840
mov ecx, dword [esp + 0x9c]
add esp, 0x18
xor ecx, esi
jne 0x1002fe2a
mov ecx, dword [esp + 0x20]
add ebp, edi
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, dword [esp + 0x34]
jb 0x1002fd9e
mov eax, dword [esp + 0x58]
dec eax
cmp ebp, eax
jae 0x1002fe38
push 2
push ecx
lea eax, [esp + 0x50]
push eax
call fcn.10061840
movzx esi, word [esp + 0x54]
lea eax, [esp + 0x58]
push 2
push ebp
push eax
call fcn.10061840
mov eax, dword [esp + 0x38]
add esp, 0x18
cmp si, word [esp + 0x4c]
jne 0x1002fe3c
add ebp, 2
add eax, 2
jmp 0x1002fe3c
call fcn.1002e44f
mov ecx, eax
jmp 0x1002fe50
call fcn.1002e44f
sub ebp, dword [esp + 0x60]
lea ecx, [eax + ebp]
jmp 0x1002fe50
mov eax, dword [esp + 0x20]
cmp ebp, dword [esp + 0x58]
jae 0x1002fe4a
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1002fe4a
inc ebp
mov ecx, ebp
sub ecx, dword [esp + 0x60]
xor edx, edx
mov esi, dword [esp + 0x10]
mov ebp, 0xff
lea eax, [ecx + 0xf0]
div ebp
mov ebp, dword [esp + 0x5c]
add esi, 4
add eax, 6
add esi, ecx
add eax, ebp
mov dword [esp + 0x10], esi
cmp eax, dword [esp + 0x40]
ja 0x100301a6
mov eax, dword [esp + 0x18]
mov dl, byte [eax]
cmp ecx, 0xf
jb 0x1002ff03
or dword [esp + 0x80], 0xffffffff
add dl, 0xf
mov byte [eax], dl
sub ecx, 0xf
push edi
lea eax, [esp + 0x84]
mov dword [esp + 0x1c], ecx
push eax
push ebp
call fcn.10061840
mov eax, dword [esp + 0x24]
mov ecx, 0x3fc
add esp, 0xc
cmp eax, ecx
jb 0x1002fef2
xor edx, edx
mov esi, eax
div ecx
mov ebx, eax
or dword [esp + 0x7c], 0xffffffff
lea eax, [esp + 0x7c]
push edi
push eax
add ebp, edi
push ebp
call fcn.10061840
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1002fec5
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
xor edx, edx
mov ecx, 0xff
div ecx
add ebp, eax
mov byte [ebp], dl
inc ebp
jmp 0x1002ff07
add cl, dl
mov byte [eax], cl
mov dword [esp + 0x20], esi
cmp esi, dword [esp + 0x50]
jae 0x1003011d
add esi, 0xfffffffe
lea eax, [esp + 0x78]
push edi
push esi
push eax
mov dword [esp + 0x28], esi
call fcn.10061840
imul ecx, dword [esp + 0x84], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1002ff7b
sub eax, 1
je 0x1002ff6e
sub eax, 1
je 0x1002ff66
sub eax, 1
jne 0x1002ff7b
sub esi, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov word [esi + ecx*2], ax
jmp 0x1002ff7f
sub esi, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov dword [esi + ecx*4], eax
jmp 0x1002ff7f
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x2c], 0xffff
push edi
push dword [esp + 0x14]
jbe 0x1003005e
lea eax, [esp + 0x7c]
push eax
call fcn.10061840
imul eax, dword [esp + 0x80], 0x9e3779b1
push edi
push dword [esp + 0x20]
shr eax, 0x14
mov eax, dword [esi + eax*4]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x84]
push eax
call fcn.10061840
imul ecx, dword [esp + 0x88], 0x9e3779b1
add esp, 0x18
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1003000a
sub eax, 1
je 0x10030003
sub eax, 1
je 0x1002fff9
sub eax, 1
jne 0x1003000a
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
mov word [esi + ecx*2], ax
jmp 0x1003000a
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
jmp 0x10030007
mov eax, dword [esp + 0x10]
mov dword [esi + ecx*4], eax
mov edx, dword [esp + 0x1c]
lea eax, [edx + 0xffff]
cmp eax, dword [esp + 0x10]
jb 0x100300f5
push edi
push edx
lea eax, [esp + 0x74]
push eax
call fcn.10061840
mov esi, dword [esp + 0x78]
lea eax, [esp + 0x9c]
push edi
push dword [esp + 0x20]
push eax
call fcn.10061840
add esp, 0x18
cmp esi, dword [esp + 0x90]
jne 0x100300f5
mov eax, ebp
inc ebp
mov dword [esp + 0x18], eax
mov byte [eax], bl
jmp 0x1002fd20
lea eax, [esp + 0x70]
push eax
call fcn.10061840
imul eax, dword [esp + 0x74], 0x9e3779b1
add esp, 0xc
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0x14]
shr eax, 0x14
mov ecx, dword [esi + eax*4]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], ecx
add ecx, dword [esp + 0x14]
sub dword [esp + 0x18], 2
mov dword [esp + 0x1c], ecx
je 0x100300ad
sub dword [esp + 0x18], 1
jne 0x100300b0
mov word [esi + eax*2], dx
jmp 0x100300b0
mov dword [esi + eax*4], edx
mov eax, dword [esp + 0x3c]
add eax, 0xffff
cmp eax, edx
jb 0x100300f5
push edi
push ecx
lea eax, [esp + 0xbc]
push eax
call fcn.10061840
mov esi, dword [esp + 0xc0]
lea eax, [esp + 0xc8]
push edi
push dword [esp + 0x20]
push eax
call fcn.10061840
add esp, 0x18
cmp esi, dword [esp + 0xbc]
je 0x10030050
mov eax, dword [esp + 0x10]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0xc8]
push eax
call fcn.10061840
imul edx, dword [esp + 0xcc], 0x9e3779b1
jmp 0x1002f9c6
mov ecx, dword [esp + 0x28]
xor edx, edx
mov edi, dword [esp + 0x20]
mov esi, 0xff
sub ecx, edi
mov dword [esp + 0x28], ecx
lea eax, [ecx + 0xf0]
div esi
inc eax
add eax, ecx
add eax, ebp
cmp eax, dword [esp + 0x40]
ja 0x100301a6
lea esi, [ebp + 1]
cmp ecx, 0xf
jb 0x10030186
mov byte [ebp], 0xf0
lea ebx, [ecx - 0xf]
mov ebp, 0xff
cmp ebx, ebp
jb 0x10030181
xor edx, edx
mov eax, ebx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.10061dc0
add esp, 0xc
add esi, edi
sub ebx, ebp
sub edi, 1
jne 0x10030172
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov byte [esi], bl
inc esi
jmp 0x1003018e
mov al, cl
shl al, 4
mov byte [ebp], al
push ecx
push edi
push esi
call fcn.10061840
mov ebx, dword [esp + 0x34]