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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, edx
mov edi, ecx
mov eax, dword [0x10588520]
xor eax, ebp
mov dword [esp + 0x78], eax
call fcn.10021080
cmp eax, 0x38425053
jne 0x1001666b
lea edx, [edi + 0xac]
mov ecx, dword [edi + 0xac]
mov eax, dword [edi + 0xb0]
cmp ecx, eax
mov dword [esp + 4], edx
mov dword [esp + 0x4c], esi
jae 0x1001667a
mov esi, edx
lea edx, [ecx + 1]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
cmp ecx, eax
jae 0x100166c6
lea esi, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
jmp 0x1001670a
mov dword [0x1058e718], 0x105359bd
jmp 0x10016c1e
cmp dword [edi + 0x28], 0
je 0x1001669b
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100166a3
add eax, esi
movzx ebx, byte [esi]
jmp 0x100166b3
xor ebx, ebx
cmp ecx, eax
jb 0x10016658
jmp 0x100166c6
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ebx, ebx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
cmp ecx, eax
jb 0x10016658
cmp dword [edi + 0x28], 0
je 0x100166e7
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100166eb
add eax, esi
movzx edx, byte [esi]
jmp 0x100166fb
xor edx, edx
jmp 0x1001670a
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor edx, edx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
movzx esi, bl
shl esi, 8
movzx edx, dl
or edx, esi
cmp edx, 1
jne 0x10016775
cmp dword [edi + 0x10], 0
je 0x10016784
mov edx, eax
sub edx, ecx
cmp edx, 5
jg 0x10016784
mov dword [edi + 0xac], eax
mov eax, 6
sub eax, edx
push eax
push dword [edi + 0x24]
call dword [edi + 0x14]
add esp, 8
mov ecx, dword [edi + 0xac]
mov eax, dword [edi + 0xb0]
mov edx, dword [esp + 4]
cmp ecx, eax
jb 0x10016791
cmp dword [edi + 0x28], 0
je 0x100167af
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100167b7
add eax, esi
movzx ebx, byte [esi]
jmp 0x100167c7
mov dword [0x1058e718], 0x10533c90
jmp 0x10016c1e
add ecx, 6
mov edx, dword [esp + 4]
mov dword [edx], ecx
cmp ecx, eax
jae 0x10016754
mov esi, edx
lea edx, [ecx + 1]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
cmp ecx, eax
jae 0x100167da
lea eax, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], eax
movzx ecx, byte [ecx]
jmp 0x1001681e
xor ebx, ebx
cmp ecx, eax
jb 0x100167a1
jmp 0x100167da
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ebx, ebx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
cmp ecx, eax
jb 0x100167a1
cmp dword [edi + 0x28], 0
je 0x100167fb
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100167ff
add eax, esi
movzx ecx, byte [esi]
jmp 0x1001680f
xor ecx, ecx
jmp 0x1001681e
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
movzx eax, bl
shl eax, 8
movzx esi, cl
or esi, eax
cmp esi, 0x11
jb 0x1001683d
mov dword [0x1058e718], 0x10532dc8
jmp 0x10016c1e
mov ecx, edi
call fcn.10021080
mov dword [esp + 0x20], eax
mov ecx, edi
call fcn.10021080
mov dword [esp + 0x24], eax
mov ecx, dword [edi + 0xac]
mov eax, dword [edi + 0xb0]
cmp ecx, eax
mov dword [esp + 0x40], esi
jae 0x1001688c
lea edx, [ecx + 1]
mov esi, dword [esp + 4]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
cmp ecx, eax
jae 0x100168d8
lea esi, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
jmp 0x1001691c
cmp dword [edi + 0x28], 0
je 0x100168ad
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100168b5
add eax, esi
movzx ebx, byte [esi]
jmp 0x100168c5
xor ebx, ebx
cmp ecx, eax
jb 0x10016879
jmp 0x100168d8
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ebx, ebx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
cmp ecx, eax
jb 0x10016879
cmp dword [edi + 0x28], 0
je 0x100168f9
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100168fd
add eax, esi
movzx edx, byte [esi]
jmp 0x1001690d
xor edx, edx
jmp 0x1001691c
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor edx, edx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
movzx esi, bl
shl esi, 8
movzx edx, dl
or edx, esi
cmp dx, 8
je 0x10016932
cmp edx, 0x10
jne 0x1001694a
cmp ecx, eax
mov dword [esp + 0x34], edx
jae 0x10016959
lea edx, [ecx + 1]
mov esi, dword [esp + 4]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
jmp 0x1001699d
mov dword [0x1058e718], 0x1053401d
jmp 0x10016c1e
cmp dword [edi + 0x28], 0
je 0x1001697a
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001697e
add eax, esi
movzx ebx, byte [esi]
jmp 0x1001698e
xor ebx, ebx
jmp 0x1001699d
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ebx, ebx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
cmp ecx, eax
jae 0x100169af
lea eax, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], eax
movzx ecx, byte [ecx]
jmp 0x100169f3
cmp dword [edi + 0x28], 0
je 0x100169d0
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100169d4
add eax, esi
movzx ecx, byte [esi]
jmp 0x100169e4
xor ecx, ecx
jmp 0x100169f3
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
movzx eax, bl
shl eax, 8
movzx ecx, cl
or ecx, eax
cmp ecx, 3
jne 0x10016a4c
lea ebx, [edi + 0xb0]
mov ecx, edi
call fcn.10021080
test eax, eax
mov dword [esp + 0x10], ebx
js 0x10016a5b
cmp dword [edi + 0x10], 0
je 0x10016a65
mov ebx, dword [ebx]
mov edx, dword [esp + 4]
mov ecx, dword [edx]
mov dword [esp + 8], ebx
sub ebx, ecx
mov esi, eax
sub esi, ebx
mov ebx, dword [esp + 0x10]
jle 0x10016a6b
mov eax, dword [esp + 8]
mov dword [edi + 0xac], eax
push esi
push dword [edi + 0x24]
call dword [edi + 0x14]
add esp, 8
jmp 0x10016a6f
mov dword [0x1058e718], 0x105330bb
jmp 0x10016c1e
mov eax, dword [ebx]
mov ecx, dword [esp + 4]
mov dword [ecx], eax
jmp 0x10016a6f
mov edx, dword [esp + 4]
mov ecx, dword [edx]
add ecx, eax
mov dword [edx], ecx
mov ecx, edi
call fcn.10021080
test eax, eax
js 0x10016aae
cmp dword [edi + 0x10], 0
je 0x10016ab8
mov ebx, dword [ebx]
mov edx, dword [esp + 4]
mov ecx, dword [edx]
mov dword [esp + 8], ebx
sub ebx, ecx
mov esi, eax
sub esi, ebx
mov ebx, dword [esp + 0x10]
jle 0x10016abe
mov eax, dword [esp + 8]
mov dword [edi + 0xac], eax
push esi
push dword [edi + 0x24]
call dword [edi + 0x14]
add esp, 8
jmp 0x10016ac2
mov eax, dword [ebx]
mov ecx, dword [esp + 4]
mov dword [ecx], eax
jmp 0x10016ac2
mov edx, dword [esp + 4]
mov ecx, dword [edx]
add ecx, eax
mov dword [edx], ecx
mov ecx, edi
call fcn.10021080
test eax, eax
js 0x10016b07
cmp dword [edi + 0x10], 0
je 0x10016b0f
mov ebx, dword [ebx]
mov esi, dword [esp + 4]
mov ecx, dword [esi]
mov dword [esp + 8], ebx
sub ebx, ecx
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x10]
jle 0x10016b15
mov eax, dword [esp + 8]
mov dword [edi + 0xac], eax
push edx
push dword [edi + 0x24]
call dword [edi + 0x14]
add esp, 8
mov ecx, dword [edi + 0xac]
jmp 0x10016b19
mov ecx, dword [ebx]
mov esi, dword [esp + 4]
jmp 0x10016b17
mov esi, dword [esp + 4]
mov ecx, dword [esi]
add ecx, eax
mov dword [esi], ecx
mov eax, dword [ebx]
cmp ecx, eax
jae 0x10016b2b
lea edx, [ecx + 1]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
jmp 0x10016b6f
cmp dword [edi + 0x28], 0
je 0x10016b4c
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10016b50
add eax, esi
movzx ebx, byte [esi]
jmp 0x10016b60
xor ebx, ebx
jmp 0x10016b6f
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ebx, ebx
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
cmp ecx, eax
jae 0x10016b81
lea eax, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], eax
movzx ecx, byte [ecx]
jmp 0x10016bc5
cmp dword [edi + 0x28], 0
je 0x10016ba2
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10016ba6
add eax, esi
movzx ecx, byte [esi]
jmp 0x10016bb6
xor ecx, ecx
jmp 0x10016bc5
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
movzx eax, bl
shl eax, 8
movzx ebx, cl
or ebx, eax
cmp ebx, 2
jb 0x10016be1
mov dword [0x1058e718], 0x10535624
jmp 0x10016c1e
cmp dword [esp + 0x24], 0x1fffffff
ja 0x10016c14
mov eax, dword [esp + 0x24]
lea ecx, [eax*4]
mov eax, ecx
or eax, dword [esp + 0x20]
js 0x10016c14
cmp dword [esp + 0x20], 0
je 0x10016c35
mov eax, 0x7fffffff
xor edx, edx
div dword [esp + 0x20]
cmp eax, ecx
jae 0x10016c35
mov dword [0x1058e718], 0x10534bff
xor edi, edi
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.101ac85a
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [ebp + 0x18]
cmp esi, 0x10
jne 0x10016c6a
cmp dword [esp + 0x34], 0x10
jne 0x10016c6a
test ebx, ebx
jne 0x10016c6a
mov ecx, 8
mov edx, dword [esp + 0x24]
push 0
push dword [esp + 0x24]
call fcn.1001d740
add esp, 8
mov ecx, dword [ebp + 0x14]
mov dword [ecx], 0x10
jmp 0x10016c7f
mov eax, dword [esp + 0x20]
imul eax, dword [esp + 0x24]
shl eax, 2
push eax
call fcn.1037f2d2
add esp, 4
mov dword [esp + 0x30], eax
test eax, eax
je 0x10016f85
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
imul eax, edx
test ebx, ebx
mov ebx, eax
mov dword [esp + 0xc], eax
je 0x10016fae
mov esi, dword [esp + 0x40]
imul edx, esi
add edx, edx
mov ecx, edi
call fcn.1001d610
lea eax, [edi + 0x2c]
mov dword [esp + 8], eax
lea eax, [edi + 0x2d]
mov dword [esp + 0x14], eax
mov eax, ebx
and eax, 7
mov dword [esp + 0x2c], eax
mov eax, ebx
and eax, 0xfffffff8
mov dword [esp + 0x44], eax
xor ecx, ecx
mov dword [esp + 0x3c], edi
jmp 0x10016cee
mov ecx, dword [esp + 0x34]
inc ecx
cmp ecx, 4
mov esi, dword [esp + 0x40]
je 0x100173ce
mov eax, dword [esp + 0x30]
lea ebx, [eax + ecx]
mov dword [esp + 0x34], ecx
cmp ecx, esi
jae 0x10016f2a
cmp dword [esp + 0xc], 0
mov edx, dword [esp + 4]
jle 0x10016cdc
xor eax, eax
mov esi, dword [esp + 0xc]
jmp 0x10016d24
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
sub esi, eax
jle 0x10016cdc
mov dword [esp + 0x38], eax
mov ecx, edx
mov edx, dword [edx]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
cmp edx, eax
jae 0x10016d59
mov dword [esp + 0x1c], eax
lea eax, [edx + 1]
mov dword [esp + 0x18], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x1c]
movzx edx, byte [edx]
cmp dl, 0x80
jne 0x10016db8
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x38]
jmp 0x10016d1c
cmp dword [edi + 0x28], 0
je 0x10016d7e
push dword [edi + 0x20]
push dword [esp + 0xc]
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10016d86
mov ecx, dword [esp + 8]
add eax, ecx
movzx edx, byte [ecx]
jmp 0x10016d97
xor ecx, ecx
mov edx, dword [esp + 4]
jmp 0x10016dcf
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
xor edx, edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x14]
mov dword [ecx], eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
cmp dl, 0x80
je 0x10016d4f
movzx ecx, dl
test cl, cl
js 0x10016e4e
cmp esi, ecx
mov edx, dword [esp + 4]
jbe 0x10016f93
inc ecx
mov dword [esp + 0x1c], ecx
mov esi, ecx
jmp 0x10016df4
lea ecx, [eax + 1]
mov dword [edx], ecx
movzx ecx, byte [eax]
mov byte [ebx], cl
add ebx, 4
dec esi
je 0x10016d14
mov eax, dword [edx]
mov ecx, dword [esp + 0x10]
cmp eax, dword [ecx]
jb 0x10016de0
cmp dword [edi + 0x28], 0
je 0x10016e23
push dword [edi + 0x20]
push dword [esp + 0xc]
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10016e27
mov ecx, dword [esp + 8]
add eax, ecx
movzx ecx, byte [ecx]
jmp 0x10016e38
xor ecx, ecx
jmp 0x10016de8
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x10]
mov dword [edi], eax
mov eax, dword [esp + 0x14]
mov dword [edx], eax
mov edi, dword [esp + 0x3c]
jmp 0x10016de8
mov edx, 0x101
sub edx, ecx
cmp edx, esi
mov esi, edx
mov edx, dword [esp + 4]
ja 0x10016f93
mov dword [esp + 0x28], esi
mov esi, eax
mov eax, dword [esp + 0x18]
cmp eax, esi
mov dword [esp + 0x1c], ecx
jae 0x10016e7f
mov ecx, eax
inc eax
mov dword [edx], eax
movzx ecx, byte [ecx]
jmp 0x10016ec6
cmp dword [edi + 0x28], 0
mov esi, dword [esp + 8]
je 0x10016ea1
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10016ea5
add eax, esi
movzx ecx, byte [esi]
jmp 0x10016eb6
xor ecx, ecx
jmp 0x10016ec6
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x10]
mov dword [esi], eax
mov eax, dword [esp + 0x14]
mov dword [edx], eax
mov esi, dword [esp + 0x28]
mov eax, esi
and eax, 7
je 0x10016ef4
xor edx, edx
nop word cs:[eax + eax]
mov byte [ebx], cl
add ebx, 4
inc edx
cmp eax, edx
jne 0x10016ee0
mov eax, esi
sub eax, edx
mov edx, dword [esp + 4]
jmp 0x10016ef6
mov eax, esi
cmp byte [esp + 0x1c], 0xf9
ja 0x10016f1f
nop dword [eax]
mov byte [ebx], cl
mov byte [ebx + 4], cl
mov byte [ebx + 8], cl
mov byte [ebx + 0xc], cl
mov byte [ebx + 0x10], cl
mov byte [ebx + 0x14], cl
mov byte [ebx + 0x18], cl
mov byte [ebx + 0x1c], cl
add ebx, 0x20
add eax, 0xfffffff8
jne 0x10016f00
mov eax, dword [esp + 0x38]
add eax, esi
jmp 0x10016d1c
cmp dword [esp + 0xc], 0
jle 0x10016cdc
cmp dword [esp + 0x34], 3
sete al
neg al
cmp dword [esp + 0xc], 8
jb 0x10016f69
mov ecx, dword [esp + 0x44]
mov byte [ebx], al
mov byte [ebx + 4], al
mov byte [ebx + 8], al
mov byte [ebx + 0xc], al
mov byte [ebx + 0x10], al
mov byte [ebx + 0x14], al
mov byte [ebx + 0x18], al
mov byte [ebx + 0x1c], al
add ebx, 0x20
add ecx, 0xfffffff8
jne 0x10016f4a
cmp dword [esp + 0x2c], 0
je 0x10016cdc
xor ecx, ecx
mov byte [ebx + ecx*4], al
inc ecx
cmp dword [esp + 0x2c], ecx
jne 0x10016f76
jmp 0x10016cdc
lea eax, [esp + 0x50]
mov dword [0x1058e718], eax
jmp 0x10016c1e
push dword [esp + 0x30]
call fcn.1037ddf5
add esp, 4
mov dword [0x1058e718], 0x10532d35
jmp 0x10016c1e
xor esi, 0x10
mov ecx, dword [esp + 0x34]
mov eax, ecx
xor eax, 0x10
or eax, esi
sete byte [esp + 0x44]
lea eax, [edi + 0x2c]
mov dword [esp + 0x14], eax
lea eax, [edi + 0x2d]
mov dword [esp + 0x18], eax
mov eax, ebx
and eax, 7
mov dword [esp + 0x3c], eax
mov eax, ebx
and eax, 0xfffffff8
mov dword [esp + 0x48], eax
xor ebx, ebx
mov eax, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x40]
jmp 0x10017014
mov ebx, dword [esp + 0x28]
inc ebx
inc dword [esp + 0x1c]
add dword [esp + 0x38], 2
cmp ebx, 4
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
je 0x100173ce
cmp ebx, esi
mov dword [esp + 0x28], ebx
jae 0x1001713c
mov eax, dword [ebp + 0x14]
cmp dword [eax], 0x10
mov eax, dword [esp + 0xc]
jne 0x100171b9
test eax, eax
jle 0x10016ff5
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
xor ebx, ebx
jmp 0x1001706e
lea esi, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
movzx esi, byte [esp + 8]
shl esi, 8
movzx edx, dl
or edx, esi
mov esi, dword [esp + 0x38]
mov word [esi + ebx*8], dx
inc ebx
cmp dword [esp + 0xc], ebx
je 0x10016ff5
cmp ecx, eax
jae 0x1001708a
lea edx, [ecx + 1]
mov esi, dword [esp + 4]
mov dword [esi], edx
movzx ecx, byte [ecx]
mov dword [esp + 8], ecx
mov ecx, edx
mov esi, dword [esp + 0x14]
jmp 0x100170e7
cmp dword [edi + 0x28], 0
je 0x100170b4
push dword [edi + 0x20]
mov esi, dword [esp + 0x18]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100170c2
add eax, esi
movzx ecx, byte [esi]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x18]
jmp 0x100170db
mov dword [esp + 8], 0
mov esi, dword [esp + 0x14]
jmp 0x100170e7
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 0x18]
mov eax, ecx
mov edx, dword [esp + 0x10]
mov dword [edx], eax
mov edx, dword [esp + 4]
mov dword [edx], ecx
cmp ecx, eax
jb 0x10017044
cmp dword [edi + 0x28], 0
je 0x10017111
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10017118
add eax, esi
movzx edx, byte [esi]
mov esi, dword [esp + 0x18]
jmp 0x1001712b
xor edx, edx
jmp 0x10017052
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
xor edx, edx
mov esi, dword [esp + 0x18]
mov eax, esi
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov ecx, dword [esp + 4]
mov dword [ecx], esi
jmp 0x10017050
cmp byte [esp + 0x44], 0
mov edx, dword [esp + 0xc]
je 0x100172c7
xor eax, eax
cmp ebx, 3
sete cl
test edx, edx
jle 0x10016ff5
mov al, cl
neg eax
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
lea ecx, [ecx + edx*2]
mov ebx, dword [esp + 0xc]
cmp ebx, 8
jb 0x1001719e
mov edx, dword [esp + 0x48]
mov word [ecx], ax
mov word [ecx + 8], ax
mov word [ecx + 0x10], ax
mov word [ecx + 0x18], ax
mov word [ecx + 0x20], ax
mov word [ecx + 0x28], ax
mov word [ecx + 0x30], ax
mov word [ecx + 0x38], ax
add ecx, 0x40
add edx, 0xfffffff8
jne 0x10017177
test bl, 7
je 0x10016ff5
xor edx, edx
mov word [ecx + edx*8], ax
inc edx
cmp dword [esp + 0x3c], edx
jne 0x100171a9
jmp 0x10016ff5
cmp ecx, 0x10
jne 0x10017327
test eax, eax
jle 0x10016ff5
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
xor edx, edx
jmp 0x100171fd
inc ecx
mov edx, dword [esp + 4]
mov dword [edx], ecx
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 8]
mov byte [edx + esi*4], bl
mov edx, esi
inc edx
cmp dword [esp + 0xc], edx
je 0x10016ff5
cmp ecx, eax
mov dword [esp + 8], edx
jae 0x1001721d
lea edx, [ecx + 1]
mov esi, dword [esp + 4]
mov dword [esi], edx
movzx ecx, byte [ecx]
mov dword [esp + 0x2c], ecx
mov ecx, edx
mov esi, dword [esp + 0x14]
jmp 0x1001727e
cmp dword [edi + 0x28], 0
je 0x1001724b
push dword [edi + 0x20]
mov esi, dword [esp + 0x18]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10017259
add eax, esi
movzx ecx, byte [esi]
mov dword [esp + 0x2c], ecx
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x18]
jmp 0x10017276
mov dword [esp + 0x2c], 0
mov esi, dword [esp + 0x14]
jmp 0x1001727e
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
mov dword [esp + 0x2c], 0
mov ecx, dword [esp + 0x18]
mov eax, ecx
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov dword [edx], eax
mov dword [ebx], ecx
cmp ecx, eax
jb 0x100171da
cmp dword [edi + 0x28], 0
je 0x100171e1
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100172a9
add eax, esi
mov edx, dword [esp + 0x18]
jmp 0x100172ba
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
mov edx, dword [esp + 0x18]
mov eax, edx
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov ecx, edx
jmp 0x100171db
cmp ebx, 3
sete al
test edx, edx
jle 0x10016ff5
neg al
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
add ecx, edx
cmp dword [esp + 0xc], 8
jb 0x1001730b
mov edx, dword [esp + 0x48]
mov byte [ecx], al
mov byte [ecx + 4], al
mov byte [ecx + 8], al
mov byte [ecx + 0xc], al
mov byte [ecx + 0x10], al
mov byte [ecx + 0x14], al
mov byte [ecx + 0x18], al
mov byte [ecx + 0x1c], al
add ecx, 0x20
add edx, 0xfffffff8
jne 0x100172ec
cmp dword [esp + 0x3c], 0
je 0x10016ff5
xor edx, edx
mov byte [ecx + edx*4], al
inc edx
cmp dword [esp + 0x3c], edx
jne 0x10017318
jmp 0x10016ff5
test eax, eax
jle 0x10016ff5
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
xor esi, esi
jmp 0x10017369
mov dword [esp + 8], eax
lea ebx, [ecx + 1]
mov edx, dword [esp + 4]
mov dword [edx], ebx
movzx edx, byte [ecx]
mov ecx, ebx
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
mov byte [eax + esi*4], dl
inc esi
cmp ebx, esi
mov eax, dword [esp + 8]
je 0x10016ff5
cmp ecx, eax
jb 0x1001733f
cmp dword [edi + 0x28], 0
je 0x10017395
push dword [edi + 0x20]
mov ebx, dword [esp + 0x18]
push ebx
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001739d
add eax, ebx
movzx edx, byte [ebx]
mov ebx, dword [esp + 0xc]
mov ecx, eax
jmp 0x100173b2
mov dword [esp + 8], eax
xor edx, edx
jmp 0x10017351
mov dword [edi + 0x28], 0
mov byte [edi + 0x2c], 0
xor edx, edx
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0xc]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 8]
mov dword [ecx], eax
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, eax
jmp 0x10017355
mov eax, dword [ebp + 0x10]
cmp esi, 4
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0xc]
jb 0x10017549
mov ecx, dword [ebp + 0x14]
cmp dword [ecx], 0x10
jne 0x1001749c
test ebx, ebx
jle 0x10017549
xor ecx, ecx
movss xmm0, dword [0x10398530]
movss xmm1, dword [0x10398490]
pxor xmm2, xmm2
jmp 0x1001741b
inc ecx
cmp ebx, ecx
je 0x10017549
movzx edx, word [edi + ecx*8 + 6]
test edx, edx
je 0x10017412
cmp edx, 0xffff
je 0x10017412
movzx edx, dx
xorps xmm4, xmm4
cvtsi2ss xmm4, edx
divss xmm4, xmm0
movaps xmm3, xmm1
divss xmm3, xmm4
movaps xmm4, xmm1
subss xmm4, xmm3
mulss xmm4, xmm0
movd xmm5, dword [edi + ecx*8]
punpcklwd xmm5, xmm2
cvtdq2ps xmm5, xmm5
movaps xmm6, xmm3
shufps xmm6, xmm3, 0
mulps xmm6, xmm5
movaps xmm5, xmm4
shufps xmm5, xmm4, 0
addps xmm5, xmm6
cvttps2dq xmm5, xmm5
pshuflw xmm5, xmm5, 0xe8
movd dword [edi + ecx*8], xmm5
movzx edx, word [edi + ecx*8 + 4]
xorps xmm5, xmm5
cvtsi2ss xmm5, edx
mulss xmm5, xmm3
addss xmm5, xmm4
cvttss2si edx, xmm5
mov word [edi + ecx*8 + 4], dx
jmp 0x10017412
test ebx, ebx
jle 0x10017549
xor ecx, ecx
movss xmm0, dword [0x1039848c]
movss xmm1, dword [0x10398490]
jmp 0x100174c1
inc ecx
cmp ebx, ecx
je 0x10017549
movzx edx, byte [edi + ecx*4 + 3]
test edx, edx
je 0x100174b8
cmp edx, 0xff
je 0x100174b8
movzx edx, dl
xorps xmm3, xmm3
cvtsi2ss xmm3, edx
divss xmm3, xmm0
movaps xmm2, xmm1
divss xmm2, xmm3
movaps xmm3, xmm1
subss xmm3, xmm2
mulss xmm3, xmm0
movzx edx, byte [edi + ecx*4]
xorps xmm4, xmm4
cvtsi2ss xmm4, edx
mulss xmm4, xmm2
addss xmm4, xmm3
cvttss2si edx, xmm4
mov byte [edi + ecx*4], dl
movzx edx, byte [edi + ecx*4 + 1]
xorps xmm4, xmm4
cvtsi2ss xmm4, edx
mulss xmm4, xmm2
addss xmm4, xmm3
cvttss2si edx, xmm4
mov byte [edi + ecx*4 + 1], dl
movzx edx, byte [edi + ecx*4 + 2]
xorps xmm4, xmm4
cvtsi2ss xmm4, edx
mulss xmm4, xmm2
addss xmm4, xmm3
cvttss2si edx, xmm4
mov byte [edi + ecx*4 + 2], dl
jmp 0x100174b8
test eax, 0xfffffffb
je 0x10017591
mov ecx, dword [ebp + 0x14]
cmp dword [ecx], 0x10
jne 0x1001756f
mov ecx, edi
mov edx, 4
push dword [esp + 0x20]
push dword [esp + 0x28]
push eax
call fcn.10020540
jmp 0x10017584
mov ecx, edi
mov edx, 4
push dword [esp + 0x20]
push dword [esp + 0x28]
push eax
call fcn.1001f950
add esp, 0xc
mov edi, eax
test eax, eax
je 0x10016c1e
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
test ecx, ecx
je 0x100175a1
mov dword [ecx], 4
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
mov eax, dword [esp + 0x24]
mov dword [esi], eax
jmp 0x10016c20