Function at 0x1001e350
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 0x1001e374
mov esi, ebx
mov dword [esp + 0x24], esi
jmp 0x1001e38b
test al, 3
jne 0x1001e36c
push 0x4014
push ebx
push eax
call fcn.100255c0
mov esi, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0xcc]
mov edx, 0x7e000000
mov edi, 0xff
mov dword [esp + 0x6c], edi
cmp ecx, edx
jbe 0x1001e3a8
mov eax, ebx
jmp 0x1001e3b7
mov eax, ecx
cdq
idiv edi
mov edx, 0x7e000000
add eax, 0x10
add eax, ecx
mov edi, dword [esp + 0xd0]
cmp edi, eax
jl 0x1001f19d
cmp ecx, 0x1000b
jge 0x1001e93b
cmp ecx, edx
ja 0x1002009c
test ecx, ecx
jne 0x1001e3ef
mov eax, dword [esp + 0xc8]
mov byte [eax], bl
xor ebx, ebx
inc ebx
jmp 0x1002009c
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 + 0x90], ebp
mov dword [esi + 0x4004], 3
lea edi, [ebp - 0xb]
add ebp, 0xfffffffb
mov dword [esp + 0x6c], ebp
mov ebp, dword [esp + 0xc8]
mov dword [esp + 0x50], edi
cmp ecx, 0xd
jl 0x1001e8df
push 4
pop edi
mov eax, edx
push edi
push eax
lea eax, [esp + 0x68]
push eax
call fcn.10023940
mov edx, dword [esp + 0x38]
mov ecx, edx
mov eax, dword [esp + 0x2c]
movzx eax, ax
sub ecx, eax
mov dword [esp + 0x88], eax
imul eax, dword [esp + 0x6c], 0x9e3779b1
push edi
shr eax, 0x13
mov word [esi + eax*2], cx
lea eax, [edx + 1]
push eax
mov dword [esp + 0x44], eax
lea eax, [esp + 0x70]
push eax
call fcn.10023940
add esp, 0x18
imul eax, dword [esp + 0x5c], 0x9e3779b1
xor edx, edx
shr eax, 0x13
inc edx
mov dword [esp + 0x40], 0x40
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
sub dword [esp + 0x28], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x1c], ecx
add ecx, edx
mov edx, dword [esp + 0x40]
lea eax, [esi + eax*2]
mov dword [esp + 0x30], ecx
movzx esi, word [eax]
mov dword [esp + 0x34], eax
mov eax, edx
sar eax, 6
inc edx
mov dword [esp + 0xb8], eax
mov dword [esp + 0x40], edx
cmp ecx, dword [esp + 0x50]
ja 0x1001e8db
add esi, dword [esp + 0x20]
lea eax, [esp + 0x38]
push edi
push ecx
push eax
mov dword [esp + 0x24], esi
call fcn.10023940
imul eax, dword [esp + 0x44], 0x9e3779b1
mov ecx, dword [esp + 0x40]
push edi
push esi
shr eax, 0x13
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
mov word [ecx], ax
lea eax, [esp + 0x58]
push eax
call fcn.10023940
mov esi, dword [esp + 0x5c]
lea eax, [esp + 0x70]
push edi
push dword [esp + 0x38]
push eax
call fcn.10023940
mov eax, dword [esp + 0x34]
add esp, 0x24
mov edx, dword [esp + 0xb8]
cmp esi, dword [esp + 0x58]
jne 0x1001e4a4
mov edx, dword [esp + 0x14]
cmp edx, dword [esp + 0x64]
mov esi, dword [esp + 0x18]
sbb ecx, ecx
neg ecx
cmp dword [esp + 0x2c], esi
sbb eax, eax
neg eax
test eax, ecx
je 0x1001e5a1
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 0x1001e59c
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 0x1001e578
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 + 0x64], ecx
cmp ecx, 0xf
jb 0x1001e5fb
lea eax, [ecx - 0xf]
mov byte [esi], 0xf0
mov esi, 0xff
mov dword [esp + 0x28], eax
cmp eax, esi
jl 0x1001e5f5
mov ecx, esi
xor edx, edx
div ecx
mov esi, eax
push esi
push ecx
push ebp
call fcn.100255c0
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, dword [esp + 0x64]
add ebp, esi
imul eax, esi, 0xffffff01
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov byte [ebp], al
inc ebp
jmp 0x1001e602
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.10023940
mov edx, dword [esp + 0x20]
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x1001e60b
mov eax, dword [esp + 0x6c]
mov ebp, esi
add eax, 0xfffffffd
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x18]
lea eax, [ebp + 2]
mov dword [esp + 0x30], eax
mov ecx, ebp
mov eax, dword [esp + 0x1c]
sub eax, esi
movzx edx, ax
call fcn.1001e2f1
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 0x1001e6f5
push edi
push ecx
lea eax, [esp + 0xac]
push eax
call fcn.10023940
mov esi, dword [esp + 0xb0]
lea eax, [esp + 0xa8]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0xb4]
add esp, 0x18
xor ecx, esi
jne 0x1001e733
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 0x1001e6f5
push edi
push ecx
lea eax, [esp + 0x78]
push eax
call fcn.10023940
mov esi, dword [esp + 0x7c]
lea eax, [esp + 0x80]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0x8c]
add esp, 0x18
xor ecx, esi
jne 0x1001e73a
mov ecx, dword [esp + 0x14]
add ebp, edi
add ecx, edi
mov dword [esp + 0x14], ecx
cmp ebp, dword [esp + 0x28]
jb 0x1001e6b6
mov eax, dword [esp + 0x6c]
dec eax
cmp ebp, eax
jae 0x1001e747
push 2
push ecx
lea eax, [esp + 0x54]
push eax
call fcn.10023940
movzx esi, word [esp + 0x58]
lea eax, [esp + 0x54]
push 2
push ebp
push eax
call fcn.10023940
mov eax, dword [esp + 0x2c]
add esp, 0x18
cmp si, word [esp + 0x48]
jne 0x1001e74b
add ebp, 2
add eax, 2
jmp 0x1001e74b
call fcn.1001e30c
jmp 0x1001e75f
call fcn.1001e30c
sub ebp, dword [esp + 0x40]
add eax, ebp
jmp 0x1001e75f
mov eax, dword [esp + 0x14]
cmp ebp, dword [esp + 0x6c]
jae 0x1001e759
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1001e759
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 0x1001e7f5
or dword [esp + 0x78], 0xffffffff
sub eax, 0xf
mov dword [esp + 0x64], eax
add cl, 0xf
push edi
lea eax, [esp + 0x7c]
mov byte [edx], cl
push eax
push dword [esp + 0x38]
call fcn.10023940
mov esi, dword [esp + 0x70]
mov ecx, 0x3fc
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov ebp, eax
cmp esi, ecx
jb 0x1001e7dc
mov eax, esi
xor edx, edx
div ecx
mov ebx, eax
or dword [esp + 0x8c], 0xffffffff
lea eax, [esp + 0x8c]
push edi
push eax
add ebp, edi
push ebp
call fcn.10023940
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1001e7b5
xor edx, edx
mov ecx, 0xff
mov eax, esi
div ecx
xor edx, edx
add ebp, eax
mov eax, esi
div ecx
mov byte [ebp], dl
inc ebp
jmp 0x1001e7fd
mov ebp, dword [esp + 0x30]
add al, cl
mov byte [edx], al
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
cmp edx, dword [esp + 0x50]
jae 0x1001e8df
lea esi, [edx - 2]
push edi
lea eax, [esp + 0x84]
push esi
push eax
call fcn.10023940
imul eax, dword [esp + 0x8c], 0x9e3779b1
mov ecx, dword [esp + 0x30]
sub esi, dword [esp + 0x88]
push edi
push dword [esp + 0x2c]
shr eax, 0x13
mov word [ecx + eax*2], si
lea eax, [esp + 0x98]
push eax
call fcn.10023940
imul edx, dword [esp + 0x9c], 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.10023940
mov esi, dword [esp + 0x78]
lea eax, [esp + 0xac]
push edi
push dword [esp + 0x44]
push eax
call fcn.10023940
add esp, 0x30
cmp esi, dword [esp + 0x88]
jne 0x1001e8b6
mov eax, ebp
inc ebp
mov dword [esp + 0x34], eax
mov byte [eax], bl
jmp 0x1001e632
mov eax, dword [esp + 0x14]
inc eax
push edi
push eax
mov dword [esp + 0x38], eax
lea eax, [esp + 0x70]
push eax
call fcn.10023940
add esp, 0xc
imul eax, dword [esp + 0x68], 0x9e3779b1
jmp 0x1001e496
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x90]
lea esi, [ebp + 1]
sub ebx, edx
cmp ebx, 0xf
jb 0x1001e926
mov byte [ebp], 0xf0
lea eax, [ebx - 0xf]
mov ebp, 0xff
cmp eax, ebp
jb 0x1001e921
xor edx, edx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.100255c0
add esp, 0xc
lea eax, [ebx - 0xf]
add esi, edi
sub eax, ebp
sub edi, 1
jne 0x1001e916
mov edx, dword [esp + 0x14]
mov byte [esi], al
inc esi
jmp 0x1001e92e
mov al, bl
shl al, 4
mov byte [ebp], al
push ebx
push edx
push esi
call fcn.10023940
jmp 0x10020090
mov eax, 0xffff
cmp eax, ebp
sbb edi, edi
add edi, 2
mov dword [esp + 0x30], edi
cmp ecx, edx
ja 0x1002009c
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 + 0x68], 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 + 0x98]
mov dword [esp + 0xc4], edx
add edx, 0xfffffffb
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0xd0]
push eax
mov dword [esp + 0x64], edx
call fcn.10023940
imul ecx, dword [esp + 0x9c], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001e9ed
sub eax, 1
je 0x1001eb2d
sub eax, 1
je 0x1001eb21
sub eax, 1
mov eax, dword [esp + 0x2c]
jne 0x1001e9f1
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 + 0x70]
push eax
call fcn.10023940
imul edx, dword [esp + 0x74], 0x9e3779b1
mov ecx, dword [esp + 0x1c]
add esp, 0xc
shr edx, 0x14
cmp dword [esp + 0x2c], 0xffff
jbe 0x1001eb5d
xor eax, eax
mov dword [esp + 0x28], 0x40
inc eax
mov esi, dword [esp + 0x24]
mov dword [esp + 0x10], ecx
add ecx, eax
mov eax, dword [esp + 0x28]
sar eax, 6
inc dword [esp + 0x28]
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x34], eax
cmp ecx, dword [esp + 0x44]
ja 0x1001f143
lea eax, [esi + edx*4]
mov dword [esp + 0x40], eax
mov eax, dword [eax]
push edi
mov dword [esp + 0x18], eax
lea eax, [esp + 0x8c]
push ecx
push eax
call fcn.10023940
imul edx, dword [esp + 0x94], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr edx, 0x14
mov dword [esp + 0x18], edx
sub eax, ebx
je 0x1001eab8
sub eax, 1
je 0x1001eb4e
sub eax, 1
je 0x1001eb39
sub eax, 1
jne 0x1001eab8
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
mov word [esi + ecx*2], ax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
add eax, 0xffff
cmp eax, ecx
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x34]
jb 0x1001ea2d
push edi
push dword [esp + 0x18]
lea eax, [esp + 0x8c]
push eax
call fcn.10023940
mov esi, dword [esp + 0x90]
lea eax, [esp + 0x8c]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
mov edx, dword [esp + 0x30]
add esp, 0x18
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x34]
cmp esi, dword [esp + 0x80]
jne 0x1001ea2d
jmp 0x1001ec62
mov eax, dword [esp + 0x68]
mov dword [esi + ecx*4], eax
jmp 0x1001e9ed
mov eax, dword [esp + 0x2c]
mov dword [esi + ecx*4], eax
jmp 0x1001e9f1
mov ecx, dword [esp + 0x10]
mov eax, ecx
mov esi, dword [esp + 0x40]
sub eax, dword [esp + 0x1c]
mov dword [esi], eax
jmp 0x1001eabc
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
jmp 0x1001eabc
mov dword [esp + 0x40], 1
mov dword [esp + 0x50], 0x40
mov esi, dword [esp + 0x24]
mov eax, ecx
sub eax, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x54], edx
lea eax, [esi + edx*4]
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x50]
add ecx, dword [esp + 0x40]
mov dword [esp + 0x8c], eax
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov eax, edx
sar eax, 6
inc edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x50], edx
cmp ecx, dword [esp + 0x44]
ja 0x1001f143
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x1c]
push edi
mov dword [esp + 0x18], eax
lea eax, [esp + 0x80]
push ecx
push eax
call fcn.10023940
imul edx, dword [esp + 0x88], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
shr edx, 0x14
dec eax
mov dword [esp + 0x18], edx
sub eax, 1
je 0x1001ec04
sub eax, 1
jne 0x1001ec0d
mov eax, dword [esp + 0x54]
mov word [esi + eax*2], cx
jmp 0x1001ec0d
mov eax, dword [esp + 0x8c]
mov dword [eax], ecx
mov eax, dword [esp + 0x34]
add eax, 0xffff
cmp eax, ecx
mov ecx, dword [esp + 0x38]
jb 0x1001eb6d
push edi
push dword [esp + 0x18]
lea eax, [esp + 0x80]
push eax
call fcn.10023940
mov esi, dword [esp + 0x84]
lea eax, [esp + 0x80]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
mov edx, dword [esp + 0x30]
add esp, 0x18
mov ecx, dword [esp + 0x38]
cmp esi, dword [esp + 0x74]
jne 0x1001eb6d
mov edx, dword [esp + 0x14]
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 0x1001eca9
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov al, byte [esi - 1]
dec edx
cmp al, byte [edx]
jne 0x1001eca3
dec esi
mov dword [esp + 0x14], edx
cmp ebx, edx
sbb ecx, ecx
neg ecx
cmp edi, esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x1001ec86
mov dword [esp + 0x10], esi
xor ebx, ebx
mov edi, dword [esp + 0x20]
mov ecx, esi
sub ecx, edi
mov edx, ebp
inc ebp
mov dword [esp + 0x54], ecx
mov dword [esp + 0x18], edx
cmp ecx, 0xf
jb 0x1001ed04
lea eax, [ecx - 0xf]
mov byte [edx], 0xf0
mov edx, 0xff
mov dword [esp + 0x28], eax
cmp eax, edx
jl 0x1001ecfe
mov ecx, 0xff
xor edx, edx
div ecx
mov esi, eax
push esi
push ecx
push ebp
call fcn.100255c0
mov ecx, dword [esp + 0x60]
add esp, 0xc
imul eax, esi, 0xffffff01
add ebp, esi
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov byte [ebp], al
inc ebp
jmp 0x1001ed0b
mov al, cl
shl al, 4
mov byte [edx], al
lea esi, [ecx + ebp]
sub edi, ebp
mov dword [esp + 0x54], esi
push 8
lea eax, [edi + ebp]
push eax
push ebp
call fcn.10023940
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x1001ed14
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x54]
add eax, 0xfffffffd
push 4
pop edi
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x10]
lea eax, [ebp + 2]
mov ecx, ebp
mov dword [esp + 0x20], eax
mov eax, esi
sub eax, dword [esp + 0x14]
movzx edx, ax
call fcn.1001e2f1
mov ecx, dword [esp + 0x14]
lea ebp, [esi + 4]
mov eax, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x14], ecx
mov dword [esp + 0x38], ebp
cmp ebp, eax
jae 0x1001edf9
push edi
push ecx
lea eax, [esp + 0x78]
push eax
call fcn.10023940
mov esi, dword [esp + 0x7c]
lea eax, [esp + 0xa8]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0xb4]
add esp, 0x18
xor ecx, esi
jne 0x1001ee37
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 0x1001edf9
push edi
push ecx
lea eax, [esp + 0xac]
push eax
call fcn.10023940
mov esi, dword [esp + 0xb0]
lea eax, [esp + 0x70]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0x7c]
add esp, 0x18
xor ecx, esi
jne 0x1001ee3e
mov ecx, dword [esp + 0x14]
add ebp, edi
add ecx, edi
mov dword [esp + 0x14], ecx
cmp ebp, dword [esp + 0x28]
jb 0x1001edba
mov eax, dword [esp + 0x58]
dec eax
cmp ebp, eax
jae 0x1001ee4b
push 2
push ecx
lea eax, [esp + 0x50]
push eax
call fcn.10023940
movzx esi, word [esp + 0x54]
lea eax, [esp + 0x58]
push 2
push ebp
push eax
call fcn.10023940
mov eax, dword [esp + 0x2c]
add esp, 0x18
cmp si, word [esp + 0x4c]
jne 0x1001ee4f
add ebp, 2
add eax, 2
jmp 0x1001ee4f
call fcn.1001e30c
jmp 0x1001ee63
call fcn.1001e30c
sub ebp, dword [esp + 0x38]
add eax, ebp
jmp 0x1001ee63
mov eax, dword [esp + 0x14]
cmp ebp, dword [esp + 0x58]
jae 0x1001ee5d
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1001ee5d
inc ebp
mov eax, ebp
sub eax, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
add esi, 4
add esi, eax
mov dword [esp + 0x10], esi
mov cl, byte [edx]
cmp eax, 0xf
jb 0x1001ef11
or dword [esp + 0xb8], 0xffffffff
sub eax, 0xf
mov dword [esp + 0x18], eax
add cl, 0xf
push edi
lea eax, [esp + 0xbc]
mov byte [edx], cl
push eax
push dword [esp + 0x28]
call fcn.10023940
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ebp, eax
cmp ecx, 0x3fc
jb 0x1001eef6
mov esi, ecx
xor edx, edx
mov eax, esi
mov ecx, 0x3fc
div ecx
mov ebx, eax
or dword [esp + 0x60], 0xffffffff
lea eax, [esp + 0x60]
push edi
push eax
add ebp, edi
push ebp
call fcn.10023940
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1001eec9
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
xor edx, edx
mov eax, ecx
div dword [esp + 0x6c]
xor edx, edx
add ebp, eax
mov eax, ecx
mov ecx, 0xff
div ecx
mov byte [ebp], dl
inc ebp
jmp 0x1001ef19
mov ebp, dword [esp + 0x20]
add cl, al
mov byte [edx], cl
mov ecx, esi
mov dword [esp + 0x20], ecx
cmp esi, dword [esp + 0x44]
jae 0x1001f147
add esi, 0xfffffffe
lea eax, [esp + 0x5c]
push edi
push esi
push eax
mov dword [esp + 0x20], esi
call fcn.10023940
imul ecx, dword [esp + 0x68], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001ef8c
sub eax, 1
je 0x1001ef7f
sub eax, 1
je 0x1001ef77
sub eax, 1
jne 0x1001ef8c
sub esi, dword [esp + 0x1c]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov word [esi + ecx*2], ax
jmp 0x1001ef90
sub esi, dword [esp + 0x1c]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov dword [esi + ecx*4], eax
jmp 0x1001ef90
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x2c], 0xffff
push edi
push dword [esp + 0x14]
jbe 0x1001f084
lea eax, [esp + 0xb8]
push eax
call fcn.10023940
imul ecx, dword [esp + 0xbc], 0x9e3779b1
mov edx, esi
push dword [esp + 0x28]
push dword [esp + 0x40]
shr ecx, 0x14
call fcn.1001e330
push edi
push dword [esp + 0x28]
mov dword [esp + 0x30], eax
lea eax, [esp + 0xb0]
push eax
call fcn.10023940
imul ecx, dword [esp + 0xb4], 0x9e3779b1
add esp, 0x20
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001f02a
sub eax, 1
je 0x1001f023
sub eax, 1
je 0x1001f019
sub eax, 1
jne 0x1001f02a
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
mov word [esi + ecx*2], ax
jmp 0x1001f02a
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
jmp 0x1001f027
mov eax, dword [esp + 0x10]
mov dword [esi + ecx*4], eax
mov edx, dword [esp + 0x14]
lea eax, [edx + 0xffff]
cmp eax, dword [esp + 0x10]
jb 0x1001f11b
push edi
push edx
lea eax, [esp + 0xa0]
push eax
call fcn.10023940
mov esi, dword [esp + 0xa4]
lea eax, [esp + 0xb4]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
add esp, 0x18
cmp esi, dword [esp + 0xa8]
jne 0x1001f11b
mov eax, ebp
inc ebp
mov dword [esp + 0x18], eax
mov byte [eax], bl
jmp 0x1001ed3c
lea eax, [esp + 0xb4]
push eax
call fcn.10023940
imul eax, dword [esp + 0xb8], 0x9e3779b1
add esp, 0xc
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0x1c]
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 + 0x54], ecx
add ecx, dword [esp + 0x1c]
sub dword [esp + 0x18], 2
mov dword [esp + 0x14], ecx
je 0x1001f0d9
sub dword [esp + 0x18], 1
jne 0x1001f0dc
mov word [esi + eax*2], dx
jmp 0x1001f0dc
mov dword [esi + eax*4], edx
mov eax, dword [esp + 0x54]
add eax, 0xffff
cmp eax, edx
jb 0x1001f11b
push edi
push ecx
lea eax, [esp + 0x44]
push eax
call fcn.10023940
mov esi, dword [esp + 0x48]
lea eax, [esp + 0xc0]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
add esp, 0x18
cmp esi, dword [esp + 0xb4]
je 0x1001f076
mov eax, dword [esp + 0x10]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0xa8]
push eax
call fcn.10023940
imul edx, dword [esp + 0xac], 0x9e3779b1
jmp 0x1001ea0a
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0xbc]
lea esi, [ebp + 1]
sub ebx, ecx
cmp ebx, 0xf
jb 0x1001f18e
mov byte [ebp], 0xf0
lea eax, [ebx - 0xf]
mov ebp, 0xff
cmp eax, ebp
jb 0x1001f189
xor edx, edx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.100255c0
add esp, 0xc
lea eax, [ebx - 0xf]
add esi, edi
sub eax, ebp
sub edi, 1
jne 0x1001f17e
mov ecx, dword [esp + 0x20]
mov byte [esi], al
inc esi
jmp 0x1001f196
mov al, bl
shl al, 4
mov byte [ebp], al
push ebx
push ecx
jmp 0x1001e930
cmp ecx, 0x1000b
jge 0x1001f7c4
cmp ecx, edx
ja 0x1002009c
test ecx, ecx
jne 0x1001f1c2
test edi, edi
jle 0x1002009c
jmp 0x1001e3de
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 0x1001f7a5
push 4
pop edi
push edi
push dword [esp + 0x30]
lea eax, [esp + 0xc4]
push eax
call fcn.10023940
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 + 0xc8], 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.10023940
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 + 0xb0], 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 0x1001f734
add esi, dword [esp + 0x10]
lea eax, [esp + 0xb4]
push edi
push ecx
push eax
mov dword [esp + 0x2c], esi
call fcn.10023940
imul eax, dword [esp + 0xc0], 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.10023940
mov esi, dword [esp + 0xc4]
lea eax, [esp + 0xc0]
push edi
push dword [esp + 0x30]
push eax
call fcn.10023940
mov eax, dword [esp + 0xbc]
add esp, 0x24
mov edx, dword [esp + 0x94]
cmp esi, dword [esp + 0xa8]
jne 0x1001f290
mov esi, dword [esp + 0x1c]
cmp esi, dword [esp + 0xb0]
mov eax, dword [esp + 0x2c]
sbb ecx, ecx
neg ecx
cmp eax, dword [esp + 0x20]
sbb eax, eax
neg eax
test eax, ecx
je 0x1001f3b3
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 0x1001f3aa
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 0x1001f386
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 + 0x6c]
inc ebp
add eax, 8
add eax, ecx
add eax, ebp
cmp eax, dword [esp + 0x34]
ja 0x1002009c
mov edi, dword [esp + 0x18]
cmp ecx, 0xf
jb 0x1001f42c
lea edx, [ecx - 0xf]
mov byte [edi], 0xf0
mov edi, 0xff
mov dword [esp + 0x3c], edx
cmp edx, edi
jl 0x1001f426
mov eax, edx
xor edx, edx
div edi
mov esi, eax
push esi
push edi
push ebp
call fcn.100255c0
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 0x1001f433
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.10023940
add ebp, 8
add esp, 0xc
cmp ebp, edi
jb 0x1001f43c
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.1001e2f1
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 0x1001f524
push edi
push ecx
lea eax, [esp + 0x98]
push eax
call fcn.10023940
mov esi, dword [esp + 0x9c]
lea eax, [esp + 0x74]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0x80]
add esp, 0x18
xor ecx, esi
jne 0x1001f562
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 0x1001f524
push edi
push ecx
lea eax, [esp + 0x90]
push eax
call fcn.10023940
mov esi, dword [esp + 0x94]
lea eax, [esp + 0x60]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0x6c]
add esp, 0x18
xor ecx, esi
jne 0x1001f56b
mov ecx, dword [esp + 0x20]
add ebp, edi
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, dword [esp + 0x44]
jb 0x1001f4e5
mov eax, dword [esp + 0x58]
dec eax
cmp ebp, eax
jae 0x1001f579
push 2
push ecx
lea eax, [esp + 0x50]
push eax
call fcn.10023940
movzx esi, word [esp + 0x54]
lea eax, [esp + 0x58]
push 2
push ebp
push eax
call fcn.10023940
mov eax, dword [esp + 0x38]
add esp, 0x18
cmp si, word [esp + 0x4c]
jne 0x1001f57d
add ebp, 2
add eax, 2
jmp 0x1001f57d
call fcn.1001e30c
mov ecx, eax
jmp 0x1001f591
call fcn.1001e30c
sub ebp, dword [esp + 0x38]
lea ecx, [eax + ebp]
jmp 0x1001f591
mov eax, dword [esp + 0x20]
cmp ebp, dword [esp + 0x58]
jae 0x1001f58b
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1001f58b
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 0x1002009c
mov edx, dword [esp + 0x18]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x1001f645
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.10023940
mov esi, dword [esp + 0x48]
mov ecx, 0x3fc
add esp, 0xc
cmp esi, ecx
jb 0x1001f62c
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.10023940
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1001f605
xor edx, edx
mov ecx, 0xff
mov eax, esi
div ecx
xor edx, edx
add ebp, eax
mov eax, esi
div ecx
mov byte [ebp], dl
inc ebp
jmp 0x1001f649
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 0x1001f738
lea esi, [ecx - 2]
push edi
lea eax, [esp + 0x90]
push esi
push eax
call fcn.10023940
imul eax, dword [esp + 0x98], 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 + 0x8c]
push eax
call fcn.10023940
imul edx, dword [esp + 0x90], 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 + 0x94]
push eax
mov word [esi + edx*2], cx
call fcn.10023940
mov esi, dword [esp + 0x98]
lea eax, [esp + 0x94]
push edi
push dword [esp + 0x3c]
push eax
call fcn.10023940
add esp, 0x30
cmp esi, dword [esp + 0x70]
jne 0x1001f709
mov eax, ebp
inc ebp
mov dword [esp + 0x18], eax
mov byte [eax], bl
jmp 0x1001f464
mov eax, dword [esp + 0x1c]
inc eax
push edi
push eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0xa4]
push eax
call fcn.10023940
add esp, 0xc
imul eax, dword [esp + 0x9c], 0x9e3779b1
jmp 0x1001f282
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 0x1002009c
lea esi, [ebp + 1]
cmp edx, 0xf
jb 0x1001f7ab
mov byte [ebp], 0xf0
lea ebx, [edx - 0xf]
mov ebp, 0xff
cmp ebx, ebp
jb 0x1001f7a0
xor edx, edx
mov eax, ebx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.100255c0
add esp, 0xc
add esi, edi
sub ebx, ebp
sub edi, 1
jne 0x1001f791
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
mov byte [esi], bl
inc esi
jmp 0x1001f7b3
mov ecx, dword [esp + 0x1c]
jmp 0x1001f73c
mov al, dl
shl al, 4
mov byte [ebp], al
push edx
push ecx
push esi
call fcn.10023940
mov ebx, dword [esp + 0x3c]
jmp 0x10020090
mov eax, 0xffff
cmp eax, ebp
sbb eax, eax
add eax, 2
mov dword [esp + 0x30], eax
cmp ecx, edx
ja 0x1002009c
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 + 0xc4]
push eax
mov dword [esp + 0x4c], edx
call fcn.10023940
imul ecx, dword [esp + 0xc8], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001f882
sub eax, 1
je 0x1001f9cb
sub eax, 1
je 0x1001f9bc
sub eax, 1
mov eax, dword [esp + 0x2c]
jne 0x1001f886
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.10023940
imul edx, dword [esp + 0xac], 0x9e3779b1
mov ecx, dword [esp + 0x1c]
add esp, 0xc
shr edx, 0x14
cmp dword [esp + 0x2c], 0xffff
jbe 0x1001f9fb
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 0x10020013
lea eax, [esi + edx*4]
mov dword [esp + 0x38], eax
mov eax, dword [eax]
push edi
mov dword [esp + 0x20], eax
lea eax, [esp + 0xb8]
push ecx
push eax
call fcn.10023940
imul edx, dword [esp + 0xc0], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr edx, 0x14
mov dword [esp + 0x44], edx
sub eax, ebx
je 0x1001f953
sub eax, 1
je 0x1001f9ec
sub eax, 1
je 0x1001f9d7
sub eax, 1
jne 0x1001f953
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 0x1001f8c8
push edi
push dword [esp + 0x20]
lea eax, [esp + 0xb4]
push eax
call fcn.10023940
mov esi, dword [esp + 0xb8]
lea eax, [esp + 0xb4]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
mov edx, dword [esp + 0x5c]
add esp, 0x18
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
cmp esi, dword [esp + 0xa8]
jne 0x1001f8c8
jmp 0x1001fb03
mov eax, dword [esp + 0xa0]
mov dword [esi + ecx*4], eax
jmp 0x1001f882
mov eax, dword [esp + 0x2c]
mov dword [esi + ecx*4], eax
jmp 0x1001f886
mov ecx, dword [esp + 0x10]
mov eax, ecx
mov esi, dword [esp + 0x38]
sub eax, dword [esp + 0x14]
mov dword [esi], eax
jmp 0x1001f957
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
jmp 0x1001f957
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 0x10020013
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.10023940
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 0x1001faa2
sub eax, 1
jne 0x1001faab
mov eax, dword [esp + 0x3c]
mov word [esi + eax*2], cx
jmp 0x1001faab
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 0x1001fa0b
push edi
push dword [esp + 0x20]
lea eax, [esp + 0xb8]
push eax
call fcn.10023940
mov esi, dword [esp + 0xbc]
lea eax, [esp + 0x9c]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
mov edx, dword [esp + 0x5c]
add esp, 0x18
mov ecx, dword [esp + 0x60]
cmp esi, dword [esp + 0x90]
jne 0x1001fa0b
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 0x1001fb4d
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
mov al, byte [esi - 1]
dec edx
cmp al, byte [edx]
jne 0x1001fb44
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 0x1001fb27
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 + 0x6c]
inc ebp
add eax, 8
add eax, ecx
add eax, ebp
cmp eax, dword [esp + 0x40]
ja 0x1002009c
cmp ecx, 0xf
jb 0x1001fbc2
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 0x1001fbbc
mov eax, edx
xor edx, edx
div edi
mov esi, eax
push esi
push edi
push ebp
call fcn.100255c0
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 0x1001fbcd
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.10023940
add ebp, 8
add esp, 0xc
cmp ebp, esi
jb 0x1001fbda
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.1001e2f1
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 0x1001fcbf
push edi
push ecx
lea eax, [esp + 0x70]
push eax
call fcn.10023940
mov esi, dword [esp + 0x74]
lea eax, [esp + 0x94]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0xa0]
add esp, 0x18
xor ecx, esi
jne 0x1001fcfd
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 0x1001fcbf
push edi
push ecx
lea eax, [esp + 0x5c]
push eax
call fcn.10023940
mov esi, dword [esp + 0x60]
lea eax, [esp + 0x90]
push edi
push ebp
push eax
call fcn.10023940
mov ecx, dword [esp + 0x9c]
add esp, 0x18
xor ecx, esi
jne 0x1001fd06
mov ecx, dword [esp + 0x20]
add ebp, edi
add ecx, edi
mov dword [esp + 0x20], ecx
cmp ebp, dword [esp + 0x34]
jb 0x1001fc80
mov eax, dword [esp + 0x58]
dec eax
cmp ebp, eax
jae 0x1001fd14
push 2
push ecx
lea eax, [esp + 0x50]
push eax
call fcn.10023940
movzx esi, word [esp + 0x54]
lea eax, [esp + 0x58]
push 2
push ebp
push eax
call fcn.10023940
mov eax, dword [esp + 0x38]
add esp, 0x18
cmp si, word [esp + 0x4c]
jne 0x1001fd18
add ebp, 2
add eax, 2
jmp 0x1001fd18
call fcn.1001e30c
mov ecx, eax
jmp 0x1001fd2c
call fcn.1001e30c
sub ebp, dword [esp + 0x60]
lea ecx, [eax + ebp]
jmp 0x1001fd2c
mov eax, dword [esp + 0x20]
cmp ebp, dword [esp + 0x58]
jae 0x1001fd26
mov al, byte [eax]
cmp al, byte [ebp]
jne 0x1001fd26
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 0x1002009c
mov eax, dword [esp + 0x18]
mov dl, byte [eax]
cmp ecx, 0xf
jb 0x1001fdf3
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.10023940
mov ecx, dword [esp + 0x24]
add esp, 0xc
cmp ecx, 0x3fc
jb 0x1001fdd8
mov esi, ecx
xor edx, edx
mov eax, esi
mov ecx, 0x3fc
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.10023940
add esp, 0xc
sub esi, 0x3fc
sub ebx, 1
jne 0x1001fdab
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
xor edx, edx
mov eax, ecx
div dword [esp + 0x6c]
xor edx, edx
add ebp, eax
mov eax, ecx
mov ecx, 0xff
div ecx
mov byte [ebp], dl
inc ebp
jmp 0x1001fdf7
add cl, dl
mov byte [eax], cl
mov dword [esp + 0x20], esi
cmp esi, dword [esp + 0x50]
jae 0x10020013
add esi, 0xfffffffe
lea eax, [esp + 0x8c]
push edi
push esi
push eax
mov dword [esp + 0x28], esi
call fcn.10023940
imul ecx, dword [esp + 0x98], 0x9e3779b1
add esp, 0xc
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001fe6e
sub eax, 1
je 0x1001fe61
sub eax, 1
je 0x1001fe59
sub eax, 1
jne 0x1001fe6e
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 0x1001fe72
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 0x1001fe72
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x2c], 0xffff
push edi
push dword [esp + 0x14]
jbe 0x1001ff54
lea eax, [esp + 0x80]
push eax
call fcn.10023940
imul eax, dword [esp + 0x84], 0x9e3779b1
push edi
push dword [esp + 0x20]
shr eax, 0x14
mov eax, dword [esi + eax*4]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x88]
push eax
call fcn.10023940
imul ecx, dword [esp + 0x8c], 0x9e3779b1
add esp, 0x18
mov eax, dword [esp + 0x30]
shr ecx, 0x14
sub eax, ebx
je 0x1001ff00
sub eax, 1
je 0x1001fef9
sub eax, 1
je 0x1001feef
sub eax, 1
jne 0x1001ff00
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
mov word [esi + ecx*2], ax
jmp 0x1001ff00
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
jmp 0x1001fefd
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 0x1001ffeb
push edi
push edx
lea eax, [esp + 0x78]
push eax
call fcn.10023940
mov esi, dword [esp + 0x7c]
lea eax, [esp + 0xa8]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
add esp, 0x18
cmp esi, dword [esp + 0x9c]
jne 0x1001ffeb
mov eax, ebp
inc ebp
mov dword [esp + 0x18], eax
mov byte [eax], bl
jmp 0x1001fc02
lea eax, [esp + 0xac]
push eax
call fcn.10023940
imul eax, dword [esp + 0xb0], 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 0x1001ffa9
sub dword [esp + 0x18], 1
jne 0x1001ffac
mov word [esi + eax*2], dx
jmp 0x1001ffac
mov dword [esi + eax*4], edx
mov eax, dword [esp + 0x3c]
add eax, 0xffff
cmp eax, edx
jb 0x1001ffeb
push edi
push ecx
lea eax, [esp + 0x6c]
push eax
call fcn.10023940
mov esi, dword [esp + 0x70]
lea eax, [esp + 0xc4]
push edi
push dword [esp + 0x20]
push eax
call fcn.10023940
add esp, 0x18
cmp esi, dword [esp + 0xb8]
je 0x1001ff46
mov eax, dword [esp + 0x10]
inc eax
push edi
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0xc8]
push eax
call fcn.10023940
imul edx, dword [esp + 0xcc], 0x9e3779b1
jmp 0x1001f8a5
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 0x1002009c
lea esi, [ebp + 1]
cmp ecx, 0xf
jb 0x1002007c
mov byte [ebp], 0xf0
lea ebx, [ecx - 0xf]
mov ebp, 0xff
cmp ebx, ebp
jb 0x10020077
xor edx, edx
mov eax, ebx
div ebp
mov edi, eax
push edi
push ebp
push esi
call fcn.100255c0
add esp, 0xc
add esi, edi
sub ebx, ebp
sub edi, 1
jne 0x10020068
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov byte [esi], bl
inc esi
jmp 0x10020084
mov al, cl
shl al, 4
mov byte [ebp], al
push ecx
push edi
push esi
call fcn.10023940
mov ebx, dword [esp + 0x34]
sub ebx, dword [esp + 0xd4]
add esp, 0xc
add ebx, esi
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0xb4
ret