Function at 0x100108de
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x240
push ebx
push ebp
push esi
mov esi, dword [esp + 0x250]
xor ebx, ebx
cmp dword [0x453c0364], ebx
push edi
je 0x1001087e
push esi
push 0x452f8980
push 0x3ea
call fcn.100285e0
add esp, 0xc
push ebx
push ebx
call fcn.10010520
push 6
call fcn.1000f420
xor ecx, ecx
cmp esi, 1
setg cl
mov esi, 4
shl esi, cl
lea eax, [esi + esi*2]
add eax, eax
add eax, eax
sub eax, esi
shl eax, 0x12
add eax, 0x180000
push eax
mov dword [esp + 0x60], esi
call fcn.1002bb10
mov edi, eax
add esp, 0x10
cmp edi, ebx
mov dword [esp + 0x60], edi
jne 0x100108ed
mov ecx, dword [0x45400de4]
push 0x452f8968
push ecx
push 0x452f84c8
push 0x3ea
call fcn.100285e0
push 1
push 0x453c0a80
call fcn.10027b90
add esp, 0x18
mov bp, word [0x453c09c0]
lea eax, [esi + esi*4]
shl eax, 0x13
lea ecx, [eax + edi + 0x180000]
movzx eax, word [0x45400ef8]
mov dword [esp + 0x90], ecx
movzx ecx, word [0x453c0a20]
lea edx, [esi + esi*2]
shl edx, 0x13
add edx, edi
add ecx, 6
add eax, 6
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x34], eax
lea esp, [esp]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x38]
xor edi, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x5c], ecx
jmp 0x10010965
mov ecx, dword [esp + 0x5c]
cdq
mov ebx, 6
idiv ebx
xor esi, esi
xor eax, eax
mov dword [esp + 0x54], esi
mov dword [esp + 0x14], esi
cmp byte [edx + ecx + 0x453c0a40], 1
sete al
mov dword [esp + 0x2c], eax
jmp 0x10010990
movsx eax, word [esi*2 + 0x452f1c18]
movzx edx, word [0x45400ef8]
mov dword [esp + 0x1c], eax
add eax, edx
mov edx, dword [esp + 0x10]
lea eax, [eax + edx + 6]
cdq
mov ebx, 6
idiv ebx
movsx ecx, word [esi*2 + 0x452f1c1c]
movzx eax, word [0x453c0a20]
mov dword [esp + 0x30], ecx
add ecx, eax
lea eax, [ecx + edi + 6]
mov ecx, 6
lea ebx, [edx + edx*2]
cdq
idiv ecx
cmp byte [edx + ebx*2 + 0x453c0a40], 1
jne 0x100109eb
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x10010a0a
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, 4
mov dword [esp + 0x14], eax
jne 0x10010a0a
mov edx, dword [esp + 0x10]
mov dword [esp + 0x70], edx
mov dword [esp + 0x8c], edi
mov ecx, dword [esp + 0x2c]
lea edx, [ecx + 1]
cmp eax, edx
jne 0x10010bb3
movsx eax, word [esi*2 + 0x452f1c1a]
movsx edx, word [esi*2 + 0x452f1c1e]
mov dword [esp + 0x48], eax
lea eax, [ecx + ecx]
and eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x4c]
add eax, edi
shl eax, 4
shl ecx, 5
mov dword [esp + 0x40], edx
mov dword [esp + 0x24], eax
mov edi, 2
add ecx, 0x452f1c30
movsx ebx, word [ecx]
movsx esi, word [ecx + 2]
mov eax, dword [esp + 0x48]
imul eax, esi
mov edx, dword [esp + 0x1c]
imul edx, ebx
add eax, edx
mov edx, dword [esp + 0x40]
imul edx, esi
mov esi, dword [esp + 0x30]
imul esi, ebx
add edx, esi
mov bx, ax
imul bx, bp
shl eax, 9
add eax, edx
lea esi, [edi - 2]
xor esi, dword [esp + 0x28]
add esi, dword [esp + 0x24]
add ebx, edx
add esi, esi
mov word [esp + esi + 0x130], bx
mov word [esp + esi + 0x140], ax
movsx ebx, word [ecx + 6]
movsx esi, word [ecx + 4]
mov eax, dword [esp + 0x48]
imul eax, ebx
mov edx, esi
imul esi, dword [esp + 0x30]
imul edx, dword [esp + 0x1c]
add eax, edx
mov edx, dword [esp + 0x40]
imul edx, ebx
add edx, esi
mov bx, ax
imul bx, bp
shl eax, 9
add eax, edx
lea esi, [edi - 1]
xor esi, dword [esp + 0x28]
add esi, dword [esp + 0x24]
add ebx, edx
add esi, esi
mov word [esp + esi + 0x130], bx
movsx ebx, word [ecx + 0xa]
mov word [esp + esi + 0x140], ax
movsx esi, word [ecx + 8]
mov eax, dword [esp + 0x48]
mov edx, esi
imul esi, dword [esp + 0x30]
imul eax, ebx
imul edx, dword [esp + 0x1c]
add eax, edx
mov edx, dword [esp + 0x40]
imul edx, ebx
mov bx, ax
add edx, esi
imul bx, bp
mov esi, dword [esp + 0x28]
xor esi, edi
add esi, dword [esp + 0x24]
shl eax, 9
add eax, edx
add ebx, edx
add esi, esi
mov word [esp + esi + 0x130], bx
movsx ebx, word [ecx + 0xe]
mov word [esp + esi + 0x140], ax
movsx esi, word [ecx + 0xc]
mov eax, dword [esp + 0x48]
mov edx, esi
imul esi, dword [esp + 0x30]
imul eax, ebx
imul edx, dword [esp + 0x1c]
add eax, edx
mov edx, dword [esp + 0x40]
imul edx, ebx
add edx, esi
lea esi, [edi + 1]
xor esi, dword [esp + 0x28]
add esi, dword [esp + 0x24]
mov bx, ax
imul bx, bp
shl eax, 9
add esi, esi
add eax, edx
add edi, 4
add ecx, 0x10
add ebx, edx
mov word [esp + esi + 0x130], bx
mov word [esp + esi + 0x140], ax
lea eax, [edi - 2]
cmp eax, 8
jl 0x10010a55
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x18]
add esi, 2
cmp esi, 0xa
mov dword [esp + 0x54], esi
jl 0x10010990
mov eax, dword [esp + 0x20]
add edi, 1
add eax, 1
cmp edi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
jl 0x10010961
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
add dword [esp + 0x10], 1
add ecx, 3
add eax, 1
cmp ecx, 9
mov dword [esp + 0x34], eax
mov dword [esp + 0x4c], ecx
jl 0x10010940
mov dx, word [0x45400ee6]
movzx ecx, dx
sub ecx, 2
cmp ecx, 2
mov dword [esp + 0x10], 2
jle 0x10010e33
movzx ecx, bp
mov ebx, 2
lea eax, [ecx - 2]
cmp eax, ebx
mov dword [esp + 0x2c], 0
mov esi, 0xffff
mov dword [esp + 0x18], ebx
jle 0x10010e1a
jmp 0x10010c50
movzx edx, word [0x45400ef8]
mov eax, dword [esp + 0x10]
lea eax, [edx + eax + 6]
cdq
mov edi, 6
idiv edi
lea edi, [edx + edx*2]
movzx edx, word [0x453c0a20]
lea eax, [edx + ebx + 6]
cdq
mov ebx, 6
idiv ebx
mov ebx, dword [esp + 0x18]
cmp byte [edx + edi*2 + 0x453c0a40], 1
jne 0x10010c9d
mov dword [esp + 0x2c], 0
mov esi, 0xffff
jmp 0x10010dfe
mov eax, dword [esp + 0x10]
mov edx, dword [0x45400e88]
imul ecx, eax
add ecx, ebx
lea ecx, [edx + ecx*8]
cdq
mov edi, 3
idiv edi
mov eax, ebx
mov ebp, 3
lea edi, [edx + edx*2]
cdq
idiv ebp
mov eax, dword [esp + 0x2c]
add edi, edx
shl edi, 5
test ax, ax
lea edx, [esp + edi + 0x130]
jne 0x10010d93
movsx edi, word [edx]
movzx edi, word [ecx + edi*8 + 2]
movzx ebp, si
cmp ebp, edi
jle 0x10010cee
mov esi, edi
test edi, edi
jle 0x10010cf8
mov eax, edi
mov dword [esp + 0x2c], eax
movsx edi, word [edx + 2]
movzx edi, word [ecx + edi*8 + 2]
movzx ebp, si
cmp ebp, edi
jle 0x10010d0a
mov esi, edi
movzx ebp, ax
cmp ebp, edi
jge 0x10010d17
mov eax, edi
mov dword [esp + 0x2c], eax
movsx edi, word [edx + 4]
movzx edi, word [ecx + edi*8 + 2]
movzx ebp, si
cmp ebp, edi
jle 0x10010d29
mov esi, edi
movzx ebp, ax
cmp ebp, edi
jge 0x10010d36
mov eax, edi
mov dword [esp + 0x2c], eax
movsx edi, word [edx + 6]
movzx edi, word [ecx + edi*8 + 2]
movzx ebp, si
cmp ebp, edi
jle 0x10010d48
mov esi, edi
movzx ebp, ax
cmp ebp, edi
jge 0x10010d55
mov eax, edi
mov dword [esp + 0x2c], eax
movsx edi, word [edx + 8]
movzx edi, word [ecx + edi*8 + 2]
movzx ebp, si
cmp ebp, edi
jle 0x10010d67
mov esi, edi
movzx ebp, ax
cmp ebp, edi
jge 0x10010d74
mov eax, edi
mov dword [esp + 0x2c], eax
movsx edx, word [edx + 0xa]
movzx edx, word [ecx + edx*8 + 2]
movzx edi, si
cmp edi, edx
jle 0x10010d86
mov esi, edx
movzx edi, ax
cmp edi, edx
jge 0x10010d93
mov eax, edx
mov dword [esp + 0x2c], eax
movzx edx, word [esp + 0x70]
mov word [ecx + 6], ax
mov word [ecx + 2], si
mov ecx, dword [esp + 0x10]
mov eax, ecx
sub eax, edx
cdq
mov edi, 3
idiv edi
mov bp, word [0x453c09c0]
mov eax, 1
sub edx, eax
je 0x10010dea
sub edx, eax
jne 0x10010dfe
movzx ecx, bp
add ebx, 2
sub ecx, edi
cmp ebx, ecx
mov dword [esp + 0x2c], 0
mov esi, 0xffff
jge 0x10010dfe
cmp dword [esp + 0x10], 2
jle 0x10010dfe
sub dword [esp + 0x10], eax
jmp 0x10010dfe
movzx edx, word [0x45400ee6]
sub edx, 3
cmp ecx, edx
jge 0x10010dfe
add dword [esp + 0x10], eax
sub ebx, eax
movzx ecx, bp
add ebx, 1
lea eax, [ecx - 2]
cmp ebx, eax
mov dword [esp + 0x18], ebx
jl 0x10010c50
mov dx, word [0x45400ee6]
mov eax, dword [esp + 0x10]
movzx ecx, dx
add eax, 1
sub ecx, 2
cmp eax, ecx
mov dword [esp + 0x10], eax
jl 0x10010c20
movzx eax, dx
sub eax, 0x13
cmp eax, 3
mov dword [esp + 0x30], 3
jle 0x1001286c
lea ebx, [ebx]
movzx ecx, bp
lea eax, [ecx - 0x13]
cmp eax, 3
mov dword [esp + 0x24], 3
jle 0x10012851
mov eax, dword [esp + 0x50]
shl eax, 0x12
mov dword [esp + 0xac], eax
movzx eax, dx
mov edx, dword [esp + 0x30]
lea esi, [eax - 3]
lea eax, [edx + 0x200]
cmp eax, esi
jl 0x10010e8b
mov eax, esi
mov esi, dword [esp + 0x24]
add esi, 0x200
add ecx, 0xfffffffd
cmp esi, ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], esi
jl 0x10010ea8
mov dword [esp + 0x28], ecx
cmp edx, eax
jge 0x10010f09
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x28]
jge 0x10010ef2
mov esi, dword [esp + 0x28]
mov ebx, dword [0x45400e88]
movzx edi, bp
imul edi, edx
add edi, eax
lea edi, [ebx + edi*8]
mov ebp, dword [edi]
mov ebx, ecx
mov dword [ebx], ebp
mov di, word [edi + 4]
add eax, 1
add ecx, 6
cmp eax, esi
mov word [ebx + 4], di
mov bp, word [0x453c09c0]
jl 0x10010ec2
mov ecx, dword [esp + 0x20]
add edx, 1
add ecx, 0xc00
cmp edx, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
jl 0x10010eb4
mov ebx, dword [esp + 0x60]
lea eax, [ebx + 0x180000]
mov edx, 3
jmp 0x10010f20
mov edi, eax
mov ecx, 0x60000
mov esi, ebx
add eax, 0x180000
sub edx, 1
rep movsd dword es:[edi], dword [esi]
jne 0x10010f20
mov edi, dword [esp + 0x30]
cmp edi, dword [esp + 0x3c]
mov dword [esp + 0x10], edi
jge 0x1001129b
mov ecx, dword [esp + 0x28]
jmp 0x10010f50
mov ebx, dword [esp + 0x24]
cmp ebx, ecx
mov dword [esp + 0x18], ebx
jge 0x1001128a
movzx edx, word [0x45400ef8]
lea eax, [edx + edi + 6]
cdq
mov esi, 6
idiv esi
movzx eax, word [0x453c0a20]
lea eax, [eax + ebx + 6]
mov ebp, 6
lea esi, [edx + edx*2]
cdq
idiv ebp
movsx esi, byte [edx + esi*2 + 0x453c0a40]
cmp esi, 1
je 0x1001127b
movzx ecx, word [0x453c09c0]
mov edx, dword [0x45400e88]
imul ecx, edi
add ecx, ebx
mov eax, edi
lea ecx, [edx + ecx*8]
cdq
mov edi, 3
idiv edi
mov eax, ebx
mov ebx, 3
lea edi, [edx + edx*2]
cdq
idiv ebx
add edi, edx
shl edi, 5
movsx ebx, word [esp + edi + 0x132]
movzx eax, word [ecx + ebx*8 + 2]
movsx ebp, word [esp + edi + 0x130]
lea edx, [esp + edi + 0x130]
movzx edi, word [ecx + ebp*8 + 2]
add edi, eax
shl ebx, 4
movzx ebx, word [ebx + ecx + 2]
mov eax, edi
shl eax, 4
sub eax, edi
add eax, eax
sub eax, edi
lea edi, [eax + eax*2]
shl ebp, 4
movzx eax, word [ecx + ebp + 2]
add eax, ebx
lea ebx, [eax + eax*2]
add ebx, ebx
add ebx, ebx
add ebx, ebx
sub ebx, eax
movzx eax, word [ecx + esi*2]
add ebx, ebx
add edi, edi
sub edi, ebx
mov dword [esp + 0xf0], edi
movsx edi, word [edx + 4]
lea ebx, [edi*4]
mov ebp, esi
sub ebp, ebx
movzx ebx, word [ecx + ebp*2]
sub eax, ebx
lea ebx, [eax + eax*2]
add ebx, ebx
add ebx, ebx
add ebx, ebx
sub ebx, eax
movsx eax, word [edx + 6]
movzx eax, word [ecx + eax*8 + 2]
lea ebp, [eax*8]
sub ebp, eax
shl ebp, 5
sub ebp, eax
movzx eax, word [ecx + edi*8 + 2]
lea ebx, [ebp + ebx*4]
mov edi, eax
shl edi, 5
add edi, eax
movzx eax, word [ecx + esi*2]
add ebx, edi
mov dword [esp + 0xf4], ebx
movsx ebx, word [edx + 8]
lea ebx, [ebx + ebx*2]
add ebx, ebx
add ebx, ebx
mov edi, esi
sub edi, ebx
movzx ebp, word [ecx + edi*2]
add eax, eax
add ebx, esi
movzx ebx, word [ecx + ebx*2]
mov edi, eax
sub edi, ebp
sub edi, ebx
mov ebx, edi
shl ebx, 5
add ebx, edi
movsx edi, word [edx + 8]
shl edi, 4
mov ebp, ecx
sub ebp, edi
movzx edi, word [ebp + 2]
lea ebp, [edi + edi*2]
add ebp, ebp
add ebp, ebp
add ebp, ebp
sub ebp, edi
movsx edi, word [edx + 8]
movzx edi, word [ecx + edi*8 + 2]
movsx edx, word [edx + 0xa]
lea ebx, [ebx + ebp*4]
lea ebp, [edi + edi*4]
lea edi, [edi + ebp*8]
lea edi, [ebx + edi*4]
mov dword [esp + 0xf8], edi
lea edi, [edx + edx*2]
add edi, edi
add edi, edi
mov ebx, esi
sub ebx, edi
movzx ebx, word [ecx + ebx*2]
add edi, esi
movzx esi, word [ecx + edi*2]
sub eax, ebx
sub eax, esi
mov esi, eax
shl esi, 5
add esi, eax
mov eax, edx
shl eax, 4
mov edi, ecx
sub edi, eax
movzx eax, word [edi + 2]
lea edi, [eax + eax*2]
add edi, edi
add edi, edi
add edi, edi
sub edi, eax
movzx eax, word [ecx + edx*8 + 2]
lea edx, [eax + eax*4]
lea eax, [eax + edx*8]
lea esi, [esi + edi*4]
lea edx, [esi + eax*4]
mov eax, dword [esp + 0xf0]
mov dword [esp + 0xfc], edx
movzx edx, word [ecx + 6]
sar eax, 8
cmp eax, edx
mov edi, eax
jl 0x10011146
mov edi, edx
movzx esi, word [ecx + 2]
cmp esi, edi
jg 0x10011156
cmp eax, edx
mov esi, eax
jl 0x10011156
mov esi, edx
movzx edx, word [esp + 0x70]
mov edi, dword [esp + 0x10]
mov eax, edi
sub eax, edx
cdq
mov ebx, 3
idiv ebx
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x60]
neg edx
sbb edx, edx
add edx, 1
mov eax, edx
shl eax, 9
sub eax, dword [esp + 0x30]
add eax, edi
shl eax, 9
sub eax, dword [esp + 0x24]
add eax, ebx
lea eax, [eax + eax*2]
mov word [ebp + eax*2 + 2], si
mov eax, dword [esp + 0xf4]
movzx esi, word [ecx + 6]
sar eax, 8
cmp eax, esi
mov ebp, eax
jl 0x100111ac
mov ebp, esi
movzx esi, word [ecx + 2]
cmp esi, ebp
jg 0x100111be
movzx esi, word [ecx + 6]
cmp eax, esi
jge 0x100111be
mov esi, eax
mov ebp, dword [esp + 0x60]
mov eax, edx
xor eax, 1
shl eax, 9
sub eax, dword [esp + 0x30]
add eax, edi
shl eax, 9
sub eax, dword [esp + 0x24]
add eax, ebx
lea eax, [eax + eax*2]
mov word [ebp + eax*2 + 2], si
mov eax, dword [esp + 0xf8]
movzx esi, word [ecx + 6]
sar eax, 8
cmp eax, esi
mov ebp, eax
jl 0x100111f7
mov ebp, esi
movzx esi, word [ecx + 2]
cmp esi, ebp
jg 0x10011209
movzx esi, word [ecx + 6]
cmp eax, esi
jge 0x10011209
mov esi, eax
mov ebp, dword [esp + 0x60]
mov eax, edx
xor eax, 2
shl eax, 9
sub eax, dword [esp + 0x30]
add eax, edi
shl eax, 9
sub eax, dword [esp + 0x24]
add eax, ebx
lea eax, [eax + eax*2]
mov word [ebp + eax*2 + 2], si
mov eax, dword [esp + 0xfc]
movzx esi, word [ecx + 6]
sar eax, 8
cmp eax, esi
mov ebp, eax
jl 0x10011242
mov ebp, esi
movzx ecx, word [ecx + 2]
cmp ecx, ebp
jle 0x1001124e
mov esi, ecx
jmp 0x10011254
cmp eax, esi
jge 0x10011254
mov esi, eax
xor edx, 3
shl edx, 9
sub edx, dword [esp + 0x30]
add edx, edi
shl edx, 9
mov eax, edx
sub eax, dword [esp + 0x24]
mov edx, dword [esp + 0x60]
add eax, ebx
lea ecx, [eax + eax*2]
mov word [edx + ecx*2 + 2], si
mov ecx, dword [esp + 0x28]
add ebx, 1
cmp ebx, ecx
mov dword [esp + 0x18], ebx
jl 0x10010f60
add edi, 1
cmp edi, dword [esp + 0x3c]
mov dword [esp + 0x10], edi
jl 0x10010f50
cmp dword [esp + 0x254], 0
mov dword [esp + 0x40], 0
jle 0x10011d26
movzx esi, word [esp + 0x70]
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x3c]
sub ecx, esi
add ecx, 4
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [esi + eax*2]
add ebp, 0xfffffffe
add eax, ecx
mov dword [esp + 0x5c], eax
lea ecx, [ecx]
mov eax, dword [esp + 0x40]
cmp eax, 1
jne 0x10011304
mov edi, dword [esp + 0x68]
mov esi, dword [esp + 0x60]
add edi, 0x600000
mov ecx, 0x180000
mov dword [esp + 0x68], edi
rep movsd dword es:[edi], dword [esi]
jmp 0x1001130c
test eax, eax
je 0x100115da
mov ebx, dword [esp + 0x30]
add ebx, 2
cmp ebx, ebp
jge 0x100115da
mov eax, dword [esp + 0x28]
add eax, 0xfffffffe
mov edi, dword [esp + 0x24]
add edi, 2
cmp edi, eax
mov dword [esp + 0x18], edi
jge 0x100115c8
jmp 0x10011340
movzx edx, word [0x45400ef8]
lea eax, [edx + ebx + 6]
cdq
mov ecx, 6
idiv ecx
mov esi, 6
lea ecx, [edx + edx*2]
movzx edx, word [0x453c0a20]
lea eax, [edx + edi + 6]
cdq
idiv esi
movsx esi, byte [edx + ecx*2 + 0x453c0a40]
cmp esi, 1
je 0x100115b2
movzx eax, word [0x453c09c0]
imul eax, ebx
add eax, edi
mov ecx, dword [0x45400e88]
lea edx, [ecx + eax*8]
mov dword [esp + 0x1c], edx
mov eax, ebx
cdq
mov ecx, 3
idiv ecx
mov eax, edi
lea ebp, [edx + edx*2]
cdq
idiv ecx
movzx ecx, word [esp + 0x70]
mov eax, ebx
sub eax, ecx
mov ecx, 3
add ebp, edx
cdq
idiv ecx
shl ebp, 5
lea ebp, [esp + ebp + 0x140]
mov dword [esp + 0x48], ebp
mov ecx, edx
neg ecx
sbb ecx, ecx
add ecx, 1
mov edx, ecx
xor edx, 1
shl edx, 9
mov eax, edx
sub eax, dword [esp + 0x30]
mov edx, dword [esp + 0x68]
add eax, ebx
shl eax, 9
sub eax, dword [esp + 0x24]
add eax, edi
lea eax, [eax + eax*2]
lea edi, [edx + eax*2]
movsx eax, word [ebp + 6]
lea edx, [eax + eax*2]
lea ebp, [esi + eax*2]
add ebp, eax
movzx ebp, word [edi + ebp*2]
lea eax, [eax + eax*2]
add edx, edx
add eax, eax
mov dword [esp + 0x38], edx
movzx edx, word [edx + edi + 2]
add eax, eax
sub edx, ebp
mov ebp, edi
sub ebp, eax
movzx eax, word [ebp + 2]
lea edx, [eax + edx*2]
mov eax, esi
sub eax, dword [esp + 0x38]
movzx eax, word [edi + eax*2]
sub edx, eax
movzx eax, word [edi + esi*2]
lea eax, [eax + eax*2]
add edx, eax
mov eax, dword [esp + 0x1c]
movzx ebp, word [eax + 6]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, ebp
mov dword [esp + 0x38], ebp
jge 0x10011456
mov ebp, eax
mov edx, dword [esp + 0x1c]
movzx edx, word [edx + 2]
cmp edx, ebp
jg 0x1001146a
mov edx, dword [esp + 0x38]
cmp eax, edx
jl 0x1001146c
mov eax, edx
mov word [edi + 2], ax
mov eax, ecx
xor eax, 2
shl eax, 9
sub eax, dword [esp + 0x30]
add eax, ebx
shl eax, 9
sub eax, dword [esp + 0x24]
add eax, dword [esp + 0x18]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x68]
lea edi, [eax + edx*2]
mov edx, dword [esp + 0x48]
movsx eax, word [edx + 8]
lea edx, [eax + eax*2]
lea ebp, [esi + eax*2]
add ebp, eax
movzx ebp, word [edi + ebp*2]
lea eax, [eax + eax*2]
add edx, edx
add eax, eax
add eax, eax
mov dword [esp + 0x38], edx
movzx edx, word [edx + edi + 2]
sub edx, ebp
mov ebp, edi
sub ebp, eax
movzx eax, word [ebp + 2]
lea edx, [eax + edx*2]
mov eax, esi
sub eax, dword [esp + 0x38]
movzx eax, word [edi + eax*2]
sub edx, eax
movzx eax, word [edi + esi*2]
lea eax, [eax + eax*2]
add edx, eax
mov eax, dword [esp + 0x1c]
movzx ebp, word [eax + 6]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, ebp
jge 0x100114f7
mov ebp, eax
mov edx, dword [esp + 0x1c]
movzx edx, word [edx + 2]
cmp edx, ebp
jg 0x1001150f
mov edx, dword [esp + 0x1c]
movzx edx, word [edx + 6]
cmp eax, edx
jl 0x10011511
mov eax, edx
mov word [edi + 2], ax
mov edx, dword [esp + 0x48]
xor ecx, 3
shl ecx, 9
sub ecx, dword [esp + 0x30]
add ecx, ebx
shl ecx, 9
mov eax, ecx
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x68]
add eax, dword [esp + 0x18]
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
movsx eax, word [edx + 0xa]
lea edi, [esi + eax*2]
add edi, eax
movzx edi, word [ecx + edi*2]
lea edx, [eax + eax*2]
lea eax, [eax + eax*2]
add eax, eax
add edx, edx
movzx ebp, word [edx + ecx + 2]
add eax, eax
sub ebp, edi
mov edi, ecx
sub edi, eax
movzx eax, word [edi + 2]
lea edi, [eax + ebp*2]
mov ebp, dword [esp + 0x1c]
mov eax, esi
sub eax, edx
movzx edx, word [ecx + eax*2]
movzx eax, word [ecx + esi*2]
movzx esi, word [ebp + 6]
lea eax, [eax + eax*2]
sub edi, edx
add edi, eax
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, esi
mov edi, eax
jl 0x10011598
mov edi, esi
movzx edx, word [ebp + 2]
cmp edx, edi
jle 0x100115a4
mov eax, edx
jmp 0x100115aa
cmp eax, esi
jl 0x100115aa
mov eax, esi
mov edi, dword [esp + 0x18]
mov word [ecx + 2], ax
mov eax, dword [esp + 0x28]
add edi, 1
add eax, 0xfffffffe
cmp edi, eax
mov dword [esp + 0x18], edi
jl 0x10011340
mov ebp, dword [esp + 0x3c]
add ebx, 1
add ebp, 0xfffffffe
cmp ebx, ebp
jl 0x10011322
mov edi, dword [esp + 0x5c]
cmp edi, ebp
mov dword [esp + 0x10], edi
jge 0x1001192d
movzx esi, word [esp + 0x8c]
mov ebx, dword [esp + 0x24]
mov ecx, ebx
sub ecx, esi
add ecx, 4
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x28]
lea ecx, [esi + eax*2]
add eax, ecx
mov dword [esp + 0x38], eax
mov eax, edi
sub eax, dword [esp + 0x30]
add edx, 0xfffffffe
shl eax, 9
sub eax, ebx
mov dword [esp + 0x74], eax
lea ebx, [ebx]
mov esi, dword [esp + 0x38]
cmp esi, edx
mov dword [esp + 0x18], esi
jge 0x1001190e
mov edx, dword [esp + 0x68]
add eax, esi
lea ecx, [eax + eax*2]
lea ecx, [edx + ecx*2]
mov dword [esp + 0x64], ecx
movzx eax, word [0x45400ef8]
lea eax, [eax + edi + 6]
cdq
mov edi, 6
idiv edi
lea edi, [edx + edx*2]
movzx edx, word [0x453c0a20]
lea eax, [edx + esi + 7]
cdq
mov esi, 6
idiv esi
xor eax, eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
xor ebx, ebx
movsx esi, byte [edx + edi*2 + 0x453c0a40]
mov edi, 1
mov dword [esp + 0x14], edi
jmp 0x100116c0
lea eax, [edi + edi*2]
add eax, eax
mov dword [esp + 0x20], eax
mov edx, ecx
sub edx, eax
movzx eax, word [ecx + 2]
movzx ebp, word [edx + 2]
add edx, 2
mov dword [esp + 0x58], edx
add eax, eax
mov edx, eax
sub edx, ebp
mov ebp, dword [esp + 0x20]
movzx ebp, word [ecx + ebp + 2]
sub edx, ebp
lea edi, [edi + edi*2]
mov ebp, esi
sub ebp, edi
lea ebp, [ecx + ebp*2]
add edi, esi
mov dword [esp + 0x34], ebp
movzx ebp, word [ebp]
lea edi, [ecx + edi*2]
mov dword [esp + 0x78], edi
movzx edi, word [edi]
add ebp, edx
add edi, ebp
cmp ebx, 1
lea ebp, [ebx + esi*8]
mov dword [esp + ebp*4 + 0xd0], edi
jle 0x10011765
mov edi, dword [esp + 0x58]
movzx edi, word [edi]
mov ebp, dword [esp + 0x34]
movzx ebp, word [ebp]
sub ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, word [edi]
sub ebp, edi
mov edi, dword [esp + 0x20]
movzx edi, word [edi + ecx + 2]
add edi, ebp
mov ebp, edi
imul ebp, edi
mov edi, edx
imul edi, edx
add ebp, edi
mov dword [esp + 0x58], ebp
fild dword [esp + 0x58]
fadd dword [esp + ebx*4 + 0x94]
fstp dword [esp + ebx*4 + 0x94]
mov edi, dword [esp + 0x14]
add edi, edi
lea edx, [edi + edi*2]
add edx, edx
mov ebp, ecx
sub ebp, edx
add ebp, 2
mov dword [esp + 0x58], ebp
movzx ebp, word [ebp]
sub eax, ebp
movzx ebp, word [edx + ecx + 2]
sub eax, ebp
xor esi, 2
lea edi, [edi + edi*2]
mov ebp, esi
sub ebp, edi
add edi, esi
lea ebp, [ecx + ebp*2]
lea edi, [ecx + edi*2]
mov dword [esp + 0x20], ebp
movzx ebp, word [ebp]
mov dword [esp + 0x34], edi
movzx edi, word [edi]
add ebp, eax
mov dword [esp + 0x2c], eax
add edi, ebp
cmp ebx, 1
lea eax, [ebx + esi*8]
mov dword [esp + eax*4 + 0xd0], edi
jle 0x10011821
mov eax, dword [esp + 0x58]
movzx edi, word [eax]
mov ebp, dword [esp + 0x20]
movzx ebp, word [ebp]
movzx eax, word [eax]
sub ebp, edi
mov edi, dword [esp + 0x34]
movzx edi, word [edi]
sub ebp, edi
movzx edi, word [edx + ecx + 2]
movzx edx, word [edx + ecx + 2]
add ebp, edi
mov edi, dword [esp + 0x20]
movzx edi, word [edi]
sub edi, eax
mov eax, dword [esp + 0x34]
movzx eax, word [eax]
sub edi, eax
mov eax, dword [esp + 0x2c]
add edi, edx
mov edx, eax
imul ebp, edi
imul edx, eax
add ebp, edx
mov dword [esp + 0x58], ebp
fild dword [esp + 0x58]
fadd dword [esp + ebx*4 + 0x94]
fstp dword [esp + ebx*4 + 0x94]
xor esi, 2
cmp ebx, 1
jle 0x1001185f
test bl, 1
je 0x1001185f
fld dword [esp + ebx*4 + 0x90]
fcomp dword [esp + ebx*4 + 0x94]
fnstsw ax
test ah, 5
jp 0x1001185f
mov eax, dword [esp + ebx*4 + 0xcc]
mov edx, dword [esp + ebx*4 + 0x10c]
mov dword [esp + ebx*4 + 0xd0], eax
mov dword [esp + ebx*4 + 0x110], edx
cmp ebx, 2
jl 0x10011869
test bl, 1
je 0x100118c4
mov eax, dword [esp + ebx*4 + 0xd0]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x1001188b
test eax, eax
jge 0x10011884
xor eax, eax
jmp 0x10011890
cmp eax, 0xffff
jl 0x10011890
mov eax, 0xffff
mov word [ecx], ax
mov eax, dword [esp + ebx*4 + 0x110]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x100118b5
test eax, eax
jge 0x100118ae
xor eax, eax
jmp 0x100118ba
cmp eax, 0xffff
jl 0x100118ba
mov eax, 0xffff
mov word [ecx + 4], ax
add ecx, 0x180000
mov edi, dword [esp + 0x14]
add ebx, 1
xor edi, 0x201
xor esi, 2
cmp ebx, 6
mov dword [esp + 0x14], edi
jl 0x100116c0
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x10]
add esi, 3
add ecx, 0x12
add edx, 0xfffffffe
cmp esi, edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x64], ecx
jl 0x10011650
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x3c]
add edi, 3
add eax, 0x600
add ecx, 0xfffffffe
cmp edi, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x74], eax
jl 0x10011630
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
lea eax, [ecx + 1]
add edx, 0xffffffff
cmp eax, edx
mov dword [esp + 0x10], eax
jge 0x10011af4
mov esi, dword [esp + 0x24]
movzx edi, word [esp + 0x70]
lea edx, [esi + 1]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x28]
add edx, 0xffffffff
mov dword [esp + 0x64], edx
mov edx, eax
sub eax, ecx
sub edx, edi
shl eax, 9
sub eax, esi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x14], eax
jmp 0x10011980
mov eax, dword [esp + 0x38]
cmp eax, dword [esp + 0x64]
mov dword [esp + 0x18], eax
jge 0x10011ac9
jmp 0x100119a0
movzx eax, word [0x45400ef8]
mov ecx, dword [esp + 0x10]
lea eax, [eax + ecx + 6]
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x18]
mov esi, 6
lea ecx, [edx + edx*2]
movzx edx, word [0x453c0a20]
lea eax, [edx + eax + 6]
cdq
idiv esi
mov esi, 2
movsx ecx, byte [edx + ecx*2 + 0x453c0a40]
sub esi, ecx
cmp esi, 1
je 0x10011ab4
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x68]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x4c]
lea ecx, [edx + ecx*2]
cdq
mov edi, 3
idiv edi
lea eax, [ecx + esi*2]
mov dword [esp + 0x20], eax
lea ebp, [ecx + 2]
mov dword [esp + 0x34], 4
neg edx
sbb edx, edx
and edx, 0x1ff
add edx, 1
lea eax, [edx + edx*2]
lea edi, [eax + esi]
lea edx, [edx + edx*2]
add edx, edx
sub esi, eax
lea edi, [ecx + edi*2]
lea esi, [ecx + esi*2]
lea ebx, [ecx + edx + 2]
sub ecx, edx
add ecx, 2
movzx eax, word [ebp]
movzx edx, word [ebx]
add eax, eax
sub eax, edx
movzx edx, word [ecx]
sub eax, edx
movzx edx, word [esi]
add eax, edx
movzx edx, word [edi]
add eax, edx
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x10011a79
test eax, eax
jge 0x10011a72
xor eax, eax
jmp 0x10011a7e
cmp eax, 0xffff
jl 0x10011a7e
mov eax, 0xffff
mov edx, dword [esp + 0x20]
mov word [edx], ax
add edx, 0x180000
add esi, 0x180000
add ecx, 0x180000
add edi, 0x180000
add ebx, 0x180000
add ebp, 0x180000
sub dword [esp + 0x34], 1
mov dword [esp + 0x20], edx
jne 0x10011a44
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x64]
mov dword [esp + 0x18], eax
jl 0x100119a0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x14], 0x200
add dword [esp + 0x4c], 1
add ecx, 1
add eax, 0xffffffff
cmp ecx, eax
mov dword [esp + 0x10], ecx
jl 0x10011980
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x3c]
lea eax, [ecx + 2]
add ebp, 0xfffffffe
cmp eax, ebp
mov dword [esp + 0x10], eax
jge 0x10011d0e
movzx edx, word [esp + 0x70]
mov esi, eax
sub eax, edx
sub esi, ecx
shl esi, 9
mov dword [esp + 0x4c], eax
mov eax, esi
sub eax, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x4c]
cdq
mov ecx, 3
idiv ecx
test edx, edx
je 0x10011ce7
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
add ecx, 2
add eax, 0xfffffffe
cmp ecx, eax
mov dword [esp + 0x18], ecx
jge 0x10011ce7
movzx edx, word [esp + 0x8c]
mov eax, ecx
sub eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
cdq
mov ecx, 3
idiv ecx
test edx, edx
je 0x10011cc8
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x68]
lea eax, [edx + esi]
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x10]
cdq
mov edi, 3
idiv edi
mov eax, esi
mov esi, 3
mov dword [esp + 0x54], 0
lea edi, [edx + edx*2]
cdq
idiv esi
add edi, edx
shl edi, 5
cmp dword [esp + 0x50], 0
lea edx, [esp + edi + 0x140]
mov dword [esp + 0x48], edx
jle 0x10011cc8
lea esp, [esp]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
movsx eax, word [esi + edx*2 + 2]
movsx edx, word [esi + edx*2]
lea esi, [edx + eax]
lea edx, [edx + edx*2]
lea eax, [eax + eax*2]
lea edx, [ecx + edx*2]
test esi, esi
movzx esi, word [edx + 2]
lea eax, [ecx + eax*2]
je 0x10011c5a
add esi, esi
mov edi, esi
movzx esi, word [ecx + 2]
lea esi, [esi + esi*2]
sub esi, edi
movzx edi, word [eax + 2]
sub esi, edi
xor edi, edi
mov ebp, eax
mov ebx, edx
movzx eax, word [ebp]
movzx edx, word [ebx]
add eax, esi
lea edx, [eax + edx*2]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0xffff
jge 0x10011c41
test eax, eax
jge 0x10011c3a
xor eax, eax
jmp 0x10011c46
cmp eax, 0xffff
jl 0x10011c46
mov eax, 0xffff
mov word [ecx + edi*2], ax
add edi, 2
add ebx, 4
add ebp, 4
cmp edi, 4
jl 0x10011c11
jmp 0x10011cad
movzx edi, word [ecx + 2]
add edi, edi
sub edi, esi
movzx esi, word [eax + 2]
sub edi, esi
xor esi, esi
mov ebp, edx
mov ebx, eax
mov edi, edi
movzx edx, word [ebp]
movzx eax, word [ebx]
add edx, edi
add eax, edx
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x10011c96
test eax, eax
jge 0x10011c8f
xor eax, eax
jmp 0x10011c9b
cmp eax, 0xffff
jl 0x10011c9b
mov eax, 0xffff
mov word [ecx + esi*2], ax
add esi, 2
add ebx, 4
add ebp, 4
cmp esi, 4
jl 0x10011c70
mov eax, dword [esp + 0x54]
add eax, 2
add ecx, 0x180000
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x54], eax
jl 0x10011bd0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
add dword [esp + 0x14], 1
add ecx, 1
add eax, 0xfffffffe
cmp ecx, eax
mov dword [esp + 0x18], ecx
jl 0x10011b64
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x4c], 1
add dword [esp + 0x1c], 0x200
add eax, 1
add ebp, 0xfffffffe
cmp eax, ebp
mov dword [esp + 0x10], eax
jl 0x10011b26
mov eax, dword [esp + 0x40]
add eax, 1
cmp eax, dword [esp + 0x254]
mov dword [esp + 0x40], eax
jl 0x100112e0
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x60]
sub dword [esp + 0x3c], ecx
sub dword [esp + 0x28], edx
cmp dword [esp + 0x50], 0
mov dword [esp + 0x68], eax
mov dword [esp + 0x54], 0
jle 0x10012359
xor ebx, ebx
mov dword [esp + 0x20], ebx
jmp 0x10011d60
mov eax, dword [esp + 0x3c]
add eax, 0xfffffffe
cmp eax, 2
mov dword [esp + 0x10], 2
jle 0x10011dea
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x6c]
add eax, 0xfffffffe
add ecx, 0x180c
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], ecx
lea ecx, [ecx]
cmp dword [esp + 0x34], 2
jle 0x10011dcc
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x14]
lea eax, [ebx + edx]
lea eax, [eax + eax*2]
shl eax, 0xa
lea edi, [eax + ecx + 0xc]
add ebp, 0xfffffffe
push esi
push edi
call fcn.10010520
add esp, 8
add esi, 6
add edi, 6
sub ebp, 1
jne 0x10011db7
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x14], 0xc00
add ecx, 1
add eax, 0xfffffffe
cmp ecx, eax
mov dword [esp + 0x10], ecx
jl 0x10011d90
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x3c]
and edx, 3
movsx esi, word [edx*2 + 0x452f1c70]
mov ecx, 3
add eax, 0xfffffffd
cmp eax, ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x10], ecx
jle 0x1001233a
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x6c]
add eax, 0xfffffffa
mov dword [esp + 0x58], eax
mov eax, 0x600
mov dword [esp + 0x14], eax
sub eax, esi
mov dword [esp + 0x34], eax
lea eax, [esi + esi*2]
add eax, eax
mov edi, eax
neg edi
mov dword [esp + 0x4c], eax
lea ebp, [edi + edx + 0x241a]
lea eax, [eax + edx + 0x241a]
mov dword [esp + 0x78], 0x2400
mov dword [esp + 0x64], ebp
mov dword [esp + 0x74], eax
mov edi, edi
cmp dword [esp + 0x58], 4
mov eax, 3
jl 0x100121c4
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x78]
add ebx, ecx
shl ebx, 0xb
lea ecx, [ebx + eax + 0x180014]
mov dword [esp + 0x48], ecx
lea ecx, [esi + edx]
sub esi, edx
mov edx, dword [esp + 0x74]
lea ecx, [ecx + eax + 0x14]
lea ebp, [esi + eax + 0x14]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffffc
shr eax, 2
add eax, 1
mov dword [esp + 0x40], edx
lea edx, [eax*4 + 3]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x18], edx
jmp 0x10011ed0
mov eax, dword [esp + 0x4c]
movsx eax, word [eax + ebp - 2]
movsx edx, word [ebp - 2]
add eax, eax
sub eax, edx
movsx edx, word [ecx - 2]
sub eax, edx
movsx ebx, word [ecx + edi + 2]
mov esi, eax
movsx edx, word [ecx + 2]
mov dword [esp + 0x2c], eax
shl esi, 6
sub esi, eax
add esi, esi
sub esi, eax
movsx eax, word [ebp + 2]
add esi, esi
add esi, esi
add ebx, ebx
sub ebx, eax
sub ebx, edx
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x4c]
sub ebx, eax
mov dword [esp + 0x44], ebx
movsx ebx, word [edx + ebp]
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
movsx edx, word [ebp]
lea eax, [eax + ebx*2]
sub eax, edx
movsx edx, word [ecx]
sub eax, edx
mov edx, eax
imul edx, eax
mov eax, dword [esp + 0x44]
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x2c]
add edx, esi
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x48]
add edx, esi
mov dword [esp + 0x44], edx
fild dword [esp + 0x44]
fstp dword [eax - 8]
movsx eax, word [ecx + edi + 4]
movsx edx, word [ebp + 4]
movsx ebx, word [ecx + edi + 8]
add eax, eax
sub eax, edx
movsx edx, word [ecx + 4]
sub eax, edx
mov esi, eax
shl esi, 6
sub esi, eax
add esi, esi
sub esi, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
movsx edx, word [eax + 2]
mov eax, dword [esp + 0x40]
add ebx, ebx
sub ebx, edx
movsx edx, word [eax + 2]
add esi, esi
add esi, esi
sub ebx, edx
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebx, eax
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x1c]
movsx esi, word [edx]
mov dword [esp + 0x44], ebx
movsx ebx, word [ecx + edi + 6]
lea eax, [eax + ebx*2]
sub eax, esi
mov esi, dword [esp + 0x40]
movsx esi, word [esi]
sub eax, esi
mov esi, dword [esp + 0x44]
mov ebx, esi
imul ebx, esi
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x2c]
add ebx, esi
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x48]
add ebx, esi
mov dword [esp + 0x44], ebx
fild dword [esp + 0x44]
fstp dword [eax - 4]
movsx eax, word [ecx + edi + 0xa]
movsx esi, word [ebp + 0xa]
movsx edx, word [edx + 8]
movsx ebx, word [ecx + edi + 0xe]
add eax, eax
sub eax, esi
movsx esi, word [ecx + 0xa]
sub eax, esi
mov esi, eax
shl esi, 6
sub esi, eax
mov dword [esp + 0x2c], eax
add ebx, ebx
sub ebx, edx
add esi, esi
sub esi, eax
mov eax, dword [esp + 0x40]
movsx edx, word [eax + 8]
sub ebx, edx
add esi, esi
add esi, esi
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
movsx edx, word [ecx + edi + 0xc]
sub ebx, eax
mov eax, dword [esp + 0x1c]
add edx, edx
mov dword [esp + 0x44], ebx
mov ebx, edx
movsx edx, word [eax + 6]
mov eax, dword [esp + 0x40]
sub ebx, edx
movsx edx, word [eax + 6]
sub ebx, edx
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
mov eax, edx
add ebx, edx
shr eax, 0x1f
add eax, ebx
mov edx, eax
imul edx, eax
mov eax, dword [esp + 0x44]
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x2c]
add edx, esi
mov esi, eax
imul esi, eax
add edx, esi
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], edx
fild dword [esp + 0x44]
fstp dword [eax]
movsx eax, word [ecx + edi + 0x10]
movsx edx, word [ebp + 0x10]
add eax, eax
sub eax, edx
movsx edx, word [ecx + 0x10]
sub eax, edx
movsx ebx, word [ecx + edi + 0x14]
mov esi, eax
mov dword [esp + 0x2c], eax
shl esi, 6
sub esi, eax
add esi, esi
sub esi, eax
mov eax, dword [esp + 0x1c]
movsx edx, word [eax + 0xe]
mov eax, dword [esp + 0x40]
add ebx, ebx
sub ebx, edx
movsx edx, word [eax + 0xe]
sub ebx, edx
add esi, esi
add esi, esi
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
movsx edx, word [ecx + edi + 0x12]
sub ebx, eax
mov eax, dword [esp + 0x1c]
add edx, edx
mov dword [esp + 0x44], ebx
mov ebx, edx
movsx edx, word [eax + 0xc]
mov eax, dword [esp + 0x40]
sub ebx, edx
movsx edx, word [eax + 0xc]
sub ebx, edx
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
mov eax, edx
add ebx, edx
shr eax, 0x1f
add eax, ebx
mov edx, eax
imul edx, eax
mov eax, dword [esp + 0x44]
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x2c]
add edx, esi
mov esi, eax
imul esi, eax
mov eax, dword [esp + 0x48]
add edx, esi
mov dword [esp + 0x44], edx
mov edx, 0x18
add ebp, edx
fild dword [esp + 0x44]
fstp dword [eax + 4]
add dword [esp + 0x1c], edx
add dword [esp + 0x40], edx
add eax, 0x10
add ecx, edx
sub dword [esp + 0x5c], 1
mov dword [esp + 0x48], eax
jne 0x10011ed0
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x10012306
mov edx, dword [esp + 0x6c]
add ebx, ecx
shl ebx, 9
add ebx, eax
lea ecx, [edx + ebx*4 + 0x180000]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x14]
add ecx, eax
lea ecx, [ecx + ecx*2]
lea ebx, [edx + ecx*2 + 2]
mov ecx, dword [esp + 0x14]
add ecx, esi
add ecx, eax
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*2 + 2]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x34]
add ecx, eax
lea ecx, [ecx + ecx*2]
lea edx, [edx + ecx*2 + 2]
mov ecx, ebp
sub ecx, eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x2c], ecx
jmp 0x10012230
movsx esi, word [ebx - 2]
mov eax, dword [esp + 0x4c]
movsx ecx, word [eax + ebx - 2]
movsx eax, word [edi + ebx - 2]
movsx ebp, word [ebx + 2]
movsx edx, word [edx + 2]
add esi, esi
sub esi, ecx
sub esi, eax
mov eax, dword [esp + 0x48]
mov ecx, esi
shl ecx, 6
sub ecx, esi
add ecx, ecx
sub ecx, esi
add ecx, ecx
add ecx, ecx
add ebp, ebp
sub ebp, edx
movsx edx, word [eax + 2]
sub ebp, edx
mov eax, 0xe1fc780f
imul ecx
add edx, ecx
movsx ebx, word [ebx]
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ebp, eax
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x5c]
lea eax, [ecx + ebx*2]
movsx ecx, word [edx]
sub eax, ecx
mov ecx, dword [esp + 0x48]
movsx ebx, word [ecx]
sub eax, ebx
mov ebx, eax
imul ebx, eax
mov eax, ebp
imul eax, ebp
add ebx, eax
mov eax, esi
imul eax, esi
add ebx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x1c]
add edx, 6
fild dword [esp + 0x44]
add ebx, 6
add ecx, 6
add eax, 4
sub dword [esp + 0x2c], 1
fstp dword [eax - 4]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x40], eax
jne 0x10012230
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x20]
mov eax, 0x200
add dword [esp + 0x14], eax
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x3c]
mov edx, 0xc00
add dword [esp + 0x78], edx
add dword [esp + 0x74], edx
add dword [esp + 0x64], edx
add ecx, 1
add eax, 0xfffffffd
cmp ecx, eax
mov dword [esp + 0x10], ecx
jl 0x10011e60
mov eax, dword [esp + 0x54]
add eax, 1
add ebx, 0x200
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x54], eax
mov dword [esp + 0x20], ebx
jl 0x10011d60
mov ecx, dword [esp + 0xac]
mov ebx, dword [esp + 0x90]
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x3c]
mov edi, 4
add eax, 0xfffffffc
cmp eax, edi
jle 0x1001255f
mov eax, dword [esp + 0x28]
add eax, 0xfffffffc
mov dword [esp + 0x38], eax
mov dword [esp + 0x14], 0x800
mov edx, 4
cmp dword [esp + 0x38], edx
jle 0x10012545
nop
fld dword [0x452f8964]
xor ebp, ebp
cmp dword [esp + 0x50], 4
jl 0x1001243b
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
add ecx, edx
lea esi, [eax + ecx*4 + 0x380000]
mov ecx, dword [esp + 0x50]
add ecx, 0xfffffffc
shr ecx, 2
add ecx, 1
lea ebp, [ecx*4]
fcom dword [esi - 0x200000]
fnstsw ax
test ah, 0x41
jne 0x100123f9
fstp st(0)
fld dword [esi - 0x200000]
fcom dword [esi - 0x100000]
fnstsw ax
test ah, 0x41
jne 0x1001240e
fstp st(0)
fld dword [esi - 0x100000]
fcom dword [esi]
fnstsw ax
test ah, 0x41
jne 0x1001241b
fstp st(0)
fld dword [esi]
fcom dword [esi + 0x100000]
fnstsw ax
test ah, 0x41
jne 0x10012430
fstp st(0)
fld dword [esi + 0x100000]
add esi, 0x400000
sub ecx, 1
jne 0x100123e4
cmp ebp, dword [esp + 0x50]
jge 0x10012478
mov eax, dword [esp + 0x6c]
mov ecx, ebp
shl ecx, 9
add ecx, edi
shl ecx, 9
add ecx, edx
lea esi, [eax + ecx*4 + 0x180000]
mov ecx, dword [esp + 0x50]
sub ecx, ebp
mov edi, edi
fcom dword [esi]
fnstsw ax
test ah, 0x41
jne 0x1001246d
fstp st(0)
fld dword [esi]
add esi, 0x100000
sub ecx, 1
jne 0x10012460
cmp dword [esp + 0x50], 0
fmul dword [0x452f8960]
mov dword [esp + 0x54], 0
fstp dword [esp + 0x20]
jle 0x10012538
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
add ecx, edx
lea ecx, [eax + ecx*4 + 0x17f804]
mov dword [esp + 0x34], ecx
lea ebx, [ebx]
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x34]
shl ecx, 9
mov ebp, 3
fld dword [esi - 8]
fcomp dword [esp + 0x20]
fnstsw ax
test ah, 0x41
jp 0x100124db
lea eax, [ecx + edi]
shl eax, 9
add eax, edx
add eax, ebx
add byte [eax], 1
fld dword [esi - 4]
fcomp dword [esp + 0x20]
fnstsw ax
test ah, 0x41
jp 0x100124f6
lea eax, [ecx + edi]
shl eax, 9
add eax, edx
add eax, ebx
add byte [eax], 1
fld dword [esi]
fcomp dword [esp + 0x20]
fnstsw ax
test ah, 0x41
jp 0x10012510
lea eax, [ecx + edi]
shl eax, 9
add eax, edx
add eax, ebx
add byte [eax], 1
add esi, 0x800
sub ebp, 1
jne 0x100124c0
mov eax, dword [esp + 0x54]
add dword [esp + 0x34], 0x100000
add eax, 1
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x54], eax
jl 0x100124b0
add edx, 1
cmp edx, dword [esp + 0x38]
jl 0x100123b0
mov eax, dword [esp + 0x3c]
add dword [esp + 0x14], 0x200
add edi, 1
add eax, 0xfffffffc
cmp edi, eax
jl 0x100123a0
mov dx, word [0x45400ee6]
mov ecx, dword [esp + 0x30]
movzx eax, dx
sub eax, ecx
cmp eax, 0x204
jge 0x1001257d
add eax, 2
mov dword [esp + 0x3c], eax
mov bp, word [0x453c09c0]
movzx eax, bp
sub eax, dword [esp + 0x24]
cmp eax, 0x204
jge 0x10012599
add eax, 2
mov dword [esp + 0x28], eax
cmp ecx, 8
jge 0x100125a6
mov eax, ecx
mov dword [esp + 0x10], eax
jmp 0x100125b2
mov dword [esp + 0x10], 8
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
add ecx, 0xfffffff8
cmp eax, ecx
mov dword [esp + 0x34], ecx
jge 0x10012836
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff8
shl eax, 9
mov dword [esp + 0x58], ecx
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0x24]
cmp edi, 8
jl 0x100125e5
mov edi, 8
cmp edi, dword [esp + 0x58]
mov dword [esp + 0x18], edi
jge 0x10012812
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x50]
add edx, 0xfffffffc
add eax, ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x20], eax
test ebx, ebx
jle 0x10012699
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x90]
add eax, edi
lea eax, [eax + ecx - 0x400]
lea edx, [esp + 0xb0]
mov dword [esp + 0x38], eax
mov dword [esp + 0x5c], ebx
jmp 0x10012640
mov dword [edx], 0
xor ecx, ecx
mov esi, 5
lea ecx, [ecx]
movsx ebx, byte [eax + 2]
movsx edi, byte [eax - 2]
add edi, ebx
movsx ebx, byte [eax - 1]
add edi, ebx
movsx ebx, byte [eax + 1]
add edi, ebx
movsx ebx, byte [eax]
add ebx, ecx
add eax, 0x200
sub esi, 1
lea ecx, [ebx + edi]
jne 0x10012650
mov eax, dword [esp + 0x38]
mov dword [edx], ecx
add eax, 0x40000
add edx, 4
sub dword [esp + 0x5c], 1
mov dword [esp + 0x38], eax
jne 0x10012640
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x44]
xor eax, eax
test esi, esi
jle 0x100126e3
jmp 0x100126b0
mov ecx, dword [esp + eax*4 + 0xc0]
mov edx, dword [esp + eax*4 + 0xb0]
cmp edx, ecx
jge 0x100126cf
mov dword [esp + eax*4 + 0xb0], 0
jmp 0x100126dc
jle 0x100126dc
mov dword [esp + eax*4 + 0xc0], 0
add eax, 1
cmp eax, esi
jl 0x100126b0
mov edx, dword [esp + 0xb0]
mov eax, 1
cmp ebx, eax
jle 0x1001270e
movzx ecx, dx
cmp ecx, dword [esp + eax*4 + 0xb0]
jge 0x10012707
mov dx, word [esp + eax*4 + 0xb0]
add eax, 1
cmp eax, ebx
jl 0x100126f3
mov ax, dx
shr ax, 3
xor ecx, ecx
xor esi, esi
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], ecx
sub edx, eax
test ebx, ebx
jle 0x1001278e
mov eax, dword [esp + 0x14]
movzx edx, dx
mov dword [esp + 0x38], edx
lea edx, [eax + edi]
mov eax, dword [esp + 0x60]
lea edx, [edx + edx*2]
lea edx, [eax + edx*2 + 4]
lea ebx, [ebx]
mov eax, dword [esp + esi*4 + 0xb0]
cmp eax, dword [esp + 0x38]
jl 0x10012781
movzx eax, word [edx - 4]
add dword [esp + 0x7c], eax
movzx eax, word [edx - 2]
add dword [esp + 0x80], eax
movzx eax, word [edx]
add dword [esp + 0x84], eax
mov ebx, dword [esp + 0x50]
add ecx, 1
add esi, 1
add edx, 0x180000
cmp esi, ebx
jl 0x10012750
mov eax, dword [esp + 0x7c]
cdq
idiv ecx
mov esi, dword [esp + 0x24]
movzx edx, bp
imul edx, dword [esp + 0x20]
mov ebp, dword [0x45400e88]
add edx, esi
add edx, edi
mov word [ebp + edx*8], ax
mov eax, dword [esp + 0x80]
cdq
idiv ecx
movzx edx, word [0x453c09c0]
imul edx, dword [esp + 0x20]
mov ebp, dword [0x45400e88]
add edx, esi
add edx, edi
mov word [ebp + edx*8 + 2], ax
mov eax, dword [esp + 0x84]
cdq
idiv ecx
movzx ecx, word [0x453c09c0]
imul ecx, dword [esp + 0x20]
mov edx, dword [0x45400e88]
add ecx, esi
add ecx, edi
add edi, 1
cmp edi, dword [esp + 0x58]
mov dword [esp + 0x18], edi
mov word [edx + ecx*8 + 4], ax
mov bp, word [0x453c09c0]
jl 0x10012610
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], 0x200
add eax, 1
cmp eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
jl 0x100125d7
mov dx, word [0x45400ee6]
mov eax, dword [esp + 0x24]
movzx ecx, bp
add eax, 0x1f0
lea esi, [ecx - 0x13]
cmp eax, esi
mov dword [esp + 0x24], eax
jl 0x10010e75
mov eax, dword [esp + 0x30]
movzx ecx, dx
add eax, 0x1f0
sub ecx, 0x13
cmp eax, ecx
mov dword [esp + 0x30], eax
jl 0x10010e50
mov edx, dword [esp + 0x60]
push edx
call fcn.1002bb90
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x240
ret