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

Disassembly:
sub esp, 0x8b0
mov edx, dword [esp + 0x8c0]
push ebx
push ebp
mov ebp, dword [esp + 0x8bc]
push esi
mov esi, dword [ebp + 4]
xor ebx, ebx
cmp edx, ebx
push edi
mov edi, 1
mov ecx, edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x34], esi
jne 0x2112cb46
test byte [esi + 0x10], 0x12
je 0x2112cb46
test byte [ebp + 0x70], 2
je 0x2112cb34
mov ecx, 2
test byte [ebp + 0x74], cl
mov dword [esp + 0x10], edi
mov dword [esp + 0x28], ecx
je 0x2112cb46
mov dword [esp + 0x10], 0x11
jmp 0x2112cb46
sar dword [esp + 0x8d4], 1
sar dword [esp + 0x8cc], 1
mov dword [esp + 0x4c], edi
mov eax, dword [ebp + 0x70]
test al, 2
je 0x2112cb58
or dword [esp + 0x10], 8
mov ebx, edi
mov dword [esp + 0x14], edi
test al, 5
jne 0x2112cb65
cmp dword [ebp + 0x2f0], 0
je 0x2112cb70
or dword [esp + 0x10], 2
add ebx, edi
mov dword [esp + 0x14], ebx
test edx, edx
je 0x2112cb86
mov edi, 0x10000
mov dword [esp + 0x24], edi
mov dword [ebp + 0x40], 0
jmp 0x2112cbff
cmp dword [ebp + 0x77c], 0
je 0x2112cba0
cmp dword [ebp + 0x7b0], 0
je 0x2112cba0
fld dword [ebp + 0x7b4]
jmp 0x2112cba2
fld1
fimul dword [ebp + 0x78]
mov eax, dword [0x21165660]
lea edx, [eax + 0x10000]
fmul dword [0x2115844c]
fidiv dword [esi + 0xc]
fistp qword [esp + 0x88]
mov edi, dword [esp + 0x88]
cmp edi, edx
mov dword [esp + 0x24], edi
jg 0x2112cbec
mov edx, 0x10000
sub edx, eax
cmp edi, edx
jl 0x2112cbec
mov edi, 0x10000
mov dword [esp + 0x24], edi
mov dword [ebp + 0x40], 0x20000000
jmp 0x2112cbff
or dword [esp + 0x10], 0x20
cmp dword [0x211656dc], 0
je 0x2112cbff
or dword [esp + 0x10], 4
mov eax, dword [esp + 0x8d4]
sub eax, dword [esp + 0x8cc]
movzx edx, word [ebp + 0x40]
mov dword [esp + 0x20], eax
sar eax, cl
mov esi, 0x10000
sub esi, edx
mov dword [esp + 0x44], esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mul ecx
add eax, 0xffff
adc edx, 0
sub eax, dword [esp + 0x44]
sbb edx, 0
mov ecx, 0x10
shrd eax, edx, cl
mov dword [esp + 0x90], eax
mov esi, dword [esp + 0x90]
mov eax, dword [ebp + 0x40]
mov ecx, ebx
shl esi, cl
test eax, 0xc0000000
je 0x2112cc7b
mov ecx, eax
shr ecx, 0x10
and ecx, 0x3fff
sar edi, 0x10
sub edi, ecx
mov ecx, ebx
shl edi, cl
sub esi, edi
jmp 0x2112cc86
mov edx, 1
mov ecx, ebx
shl edx, cl
add esi, edx
xor edx, edx
cmp esi, edx
jg 0x2112cc95
mov esi, 1
mov ecx, ebx
shl esi, cl
lea edi, [esp + 0xaf]
and edi, 0xfffffff0
cmp dword [ebp + 0x2f0], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x1c], edx
mov ecx, edi
je 0x2112cda6
xor ebx, ebx
cmp dword [ebp + 0x2dc], 0x10000
je 0x2112ccf6
mov cx, word [ebp + 0x2e0]
mov ax, word [ebp + 0x2dc]
mov word [edi + 2], cx
mov ecx, dword [esp + 0x14]
mov ebx, 1
shl ebx, cl
mov ecx, dword [esp + 0x10]
and cl, 8
neg cl
mov word [edi], ax
sbb ecx, ecx
and ecx, 2
add ecx, 2
add ecx, edi
mov eax, esi
sub eax, ebx
test eax, eax
jle 0x2112cd25
cmp eax, 0x800
lea edx, [ebp + 0x2f8]
mov dword [esp + 0x1c], edx
jle 0x2112cd14
mov eax, 0x800
push eax
mov eax, edx
mov edx, dword [eax + 4]
push ecx
mov ecx, dword [eax + 0x68]
push ecx
call edx
mov esi, eax
add esi, ebx
test esi, esi
je 0x2112cd8f
mov ebx, dword [ebp + 0x4c]
mov eax, dword [ebp + ebx*4 + 0x1c]
cmp eax, dword [ebp + ebx*4 + 0x14]
jne 0x2112cd78
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x34]
cmp eax, 0xffffffff
je 0x2112cd78
push 0
push 0
lea edx, [esp + 0x48]
push edx
push eax
mov eax, ecx
mov ecx, dword [eax + 0x68]
mov edx, dword [eax + 0x10]
push ecx
mov dword [esp + 0x54], 0xffffffff
call edx
cmp dword [esp + 0x40], 0
jle 0x2112cd78
mov eax, dword [ebp + ebx*4 + 0x14]
sub eax, 1
mov dword [ebp + ebx*4 + 0x1c], eax
mov dword [ebp + 0x3c], 1
mov dword [esp + 0x18], edi
add edi, esi
mov dword [esp + 0x40], 1
mov dword [esp + 0x30], edi
jmp 0x2112ced7
mov ecx, dword [ebp + 0x4c]
cmp dword [ebp + ecx*4 + 0x2c], 0
je 0x2112cd78
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8b0
ret
mov edx, dword [ebp + 0x4c]
mov ebx, dword [ebp + edx*4 + 0x1c]
add ebx, dword [ebp + edx*4 + 0xc]
mov edx, dword [esp + 0x8c8]
add edx, ebx
test byte [ebp + 0x70], 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], edx
je 0x2112ce90
cmp dword [ebp + 0x2dc], 0x10000
mov eax, esi
je 0x2112ce11
mov cx, word [ebp + 0x2e0]
mov ax, word [ebp + 0x2dc]
mov word [edi + 2], cx
mov ecx, dword [esp + 0x14]
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x10]
and cl, 8
mov word [edi], ax
mov eax, esi
sub eax, edx
neg cl
sbb ecx, ecx
and ecx, 2
add ecx, 2
add ecx, edi
test eax, eax
jbe 0x2112ced7
cmp eax, 0x800
mov dword [esp + 0x94], ebx
mov dword [esp + 0x84], ecx
jbe 0x2112ce33
mov eax, 0x800
mov ecx, dword [ebp + 4]
lea edx, [ebp + 0x294]
push edx
mov edx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x8d0]
push edx
push eax
lea eax, [esp + 0xa4]
push eax
mov eax, dword [ecx + 0x19fc]
lea edx, [esp + 0x98]
push edx
call eax
mov esi, dword [esp + 0x84]
mov eax, dword [ebp + 0x4c]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x18], edi
mov dword [esp + 0x30], esi
sub esi, edi
sub ecx, dword [ebp + eax*4 + 0xc]
mov dword [esp + 0x40], 1
mov dword [ebp + eax*4 + 0x1c], ecx
jmp 0x2112ced7
test esi, esi
jg 0x2112ceae
mov ecx, dword [esp + 0x14]
movzx edx, ax
add edx, dword [esp + 0x24]
mov esi, 1
shl esi, cl
cmp edx, 0x10000
jb 0x2112ced1
mov eax, dword [esp + 0x8c8]
cmp esi, eax
jle 0x2112cebb
mov esi, eax
cmp dword [ebp + 0x238], 0
je 0x2112ced1
cmp esi, 0x800
jle 0x2112ced1
mov esi, 0x800
add ebx, esi
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x34]
xor edi, edi
cmp esi, edi
jle 0x2112d812
cmp dword [esp + 0x20], edi
jle 0x2112d812
movzx ecx, word [ebp + 0x40]
mov eax, dword [esp + 0x24]
mov edx, 0x10000
sub edx, ecx
mov ecx, dword [esp + 0x14]
sar esi, cl
sar eax, 1
mov dword [esp + 0x44], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x38], esi
xor edx, edx
mov eax, dword [esp + 0x38]
mov ecx, 0x10
shld edx, eax, cl
shl eax, cl
add eax, dword [esp + 0x2c]
adc edx, 0
sub eax, dword [esp + 0x44]
sbb edx, 0
mov ecx, dword [esp + 0x24]
idiv ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
shl eax, cl
cmp eax, dword [esp + 0x20]
jge 0x2112cf59
cmp eax, edi
jne 0x2112cf55
mov eax, 1
shl eax, cl
mov dword [esp + 0x20], eax
cmp dword [esp + 0x8d0], edi
fld dword [0x21158448]
fld dword [0x21158444]
mov dword [esp + 0x2c], edi
fld dword [0x21158440]
mov dword [esp + 0x38], 1
jne 0x2112d14a
fld1
mov eax, dword [ebx + 0x18]
cmp eax, 0x60
fsub dword [ebp + 0x94]
mov dword [esp + 0x14], edi
fmul dword [ebx + 0x1a14]
fmul dword [ebp + 0x90]
fmul dword [ebx + 8]
fld dword [ebp + 0x84]
fmul st(1)
fstp dword [esp + 0x50]
fld dword [ebp + 0x88]
fmul st(1)
fstp dword [esp + 0x54]
je 0x2112cfc4
cmp eax, 0x58
jne 0x2112cffc
fld dword [ebp + 0x7f0]
mov dword [esp + 0x38], 7
fmul st(1)
fstp dword [esp + 0x58]
fld dword [ebp + 0x7f4]
fmul st(1)
fstp dword [esp + 0x5c]
fld dword [ebp + 0x7e8]
fmul st(1)
fstp dword [esp + 0x60]
fmul dword [ebp + 0x7ec]
fstp dword [esp + 0x64]
jmp 0x2112cffe
fstp st(0)
cmp dword [ebx + 0x18d0], edi
mov dword [esp + 0x28], edi
jle 0x2112d136
lea eax, [ebx + 0x17a8]
xor edx, edx
mov dword [esp + 0x1c], eax
lea ecx, [ebp + 0xe8]
lea esi, [ebx + 0x1714]
mov eax, dword [esp + 0x38]
mov edi, edx
and edi, eax
fld dword [esp + edi*4 + 0x50]
lea edi, [edx + 1]
fmul dword [esi - 4]
and edi, eax
fld dword [esp + edi*4 + 0x50]
mov eax, dword [ecx + 0x48]
fmul dword [esi]
mov dword [ecx + 0x90], eax
mov eax, dword [ecx + 0x4c]
mov dword [ecx + 0x94], eax
mov eax, dword [esp + 0x1c]
cmp dword [eax], 1
jne 0x2112d094
fstp st(0)
mov dword [ecx + 0x4c], 0
fld dword [ecx - 0x48]
fmul dword [ecx]
fmulp st(1)
fmul st(3)
fadd st(2)
fistp qword [esp + 0x88]
mov eax, dword [esp + 0x88]
cmp eax, 0x800
mov dword [ecx + 0x48], eax
jl 0x2112d08e
mov dword [ecx + 0x48], 0x800
cmp dword [ecx + 0x48], 0
jmp 0x2112d0f0
fld dword [ecx - 0x48]
fmul dword [ecx]
fmulp st(2)
fxch st(1)
fmul st(4)
fadd st(3)
fistp qword [esp + 0x44]
mov eax, dword [esp + 0x44]
cmp eax, 0x800
mov dword [ecx + 0x48], eax
fld dword [ecx - 0x44]
fmul dword [ecx + 4]
fmulp st(1)
fmul st(3)
fadd st(2)
fistp qword [esp + 0x98]
mov edi, dword [esp + 0x98]
mov dword [ecx + 0x4c], edi
jl 0x2112d0d7
mov dword [ecx + 0x48], 0x800
cmp edi, 0x800
jl 0x2112d0e6
mov dword [ecx + 0x4c], 0x800
cmp dword [ecx + 0x48], 0
jne 0x2112d111
cmp dword [ecx + 0x4c], 0
jne 0x2112d111
fcom dword [ebp + 0x8c]
fnstsw ax
test ah, 0x41
je 0x2112d10c
fcom dword [ebx + 0x1a10]
fnstsw ax
test ah, 0x41
jne 0x2112d111
add dword [esp + 0x14], 1
mov eax, dword [esp + 0x28]
add dword [esp + 0x1c], 0x10
add eax, 1
add edx, 2
add esi, 8
add ecx, 8
cmp eax, dword [ebx + 0x18d0]
mov dword [esp + 0x28], eax
jl 0x2112d026
mov ecx, dword [esp + 0x14]
cmp ecx, dword [ebx + 0x18d0]
jne 0x2112d14a
mov dword [esp + 0x2c], 1
fld1
xor esi, esi
cmp dword [ebp + 0x7d4], esi
fsub dword [ebp + 0x9c]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], esi
fmul dword [ebx + 0x1a10]
fmul dword [ebp + 0x8c]
fmul dword [ebp + 0x7c]
fmul dword [ebx + 8]
je 0x2112d180
fmul dword [ebp + 0x7d8]
xor ecx, ecx
cmp dword [esp + 0x8d0], esi
jne 0x2112d202
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x2112d19b
mov ecx, 1
cmp dword [ebx + 0x1aa4], esi
je 0x2112d20a
cmp ecx, esi
jne 0x2112d20a
fmulp st(2)
faddp st(1)
fistp qword [esp + 0x98]
mov eax, dword [esp + 0x98]
cmp eax, 0x800
mov dword [esp + 0x38], eax
jl 0x2112d1cc
mov dword [esp + 0x38], 0x800
mov eax, dword [ebx + 0x1abc]
add eax, dword [ebx + 0x1a94]
mov dword [esp + 0x44], eax
call sym.mss32.dll__AIL_ms_count_0
mov ecx, dword [ebx + 0x1aac]
mov edx, dword [ebx + 0x1aa8]
sub edx, eax
lea edi, [ecx + 0x64]
cmp edx, edi
jae 0x2112d210
lea eax, [ecx + eax + 0x64]
mov dword [ebx + 0x1aa8], eax
jmp 0x2112d210
fstp st(0)
fstp st(2)
fstp st(0)
jmp 0x2112d20e
fstp st(0)
fstp st(1)
fstp st(0)
cmp dword [ebp + 0x778], esi
jg 0x2112d220
cmp dword [ebp + 0x238], esi
je 0x2112d228
mov dword [esp + 0x1c], 1
cmp dword [esp + 0x2c], esi
mov eax, dword [esp + 0x18]
mov dword [esp + 0x88], eax
je 0x2112d266
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
xor eax, eax
add dword [esp + 0x8cc], edx
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x2dc], 0x10000
mov dword [ebp + 0x40], eax
mov dword [esp + 0x18], ecx
jmp 0x2112d75d
cmp dword [ebp + 0x40], 0x20000000
mov ecx, dword [esp + 0x10]
lea edi, [ebp + 0x40]
jne 0x2112d2f2
test cl, 4
je 0x2112d2f2
mov edx, dword [ebp + 0x70]
test dl, 1
mov dword [edi], esi
je 0x2112d2ad
test dl, 2
je 0x2112d2a8
test byte [ebp + 0x74], 2
je 0x2112d29c
movsx edx, word [eax + 2]
mov dword [ebp + 0x44], edx
movsx eax, word [eax]
jmp 0x2112d2ef
movsx edx, word [eax]
mov dword [ebp + 0x44], edx
movsx eax, word [eax + 2]
jmp 0x2112d2ef
movsx eax, word [eax]
jmp 0x2112d2ec
test dl, 2
je 0x2112d2e6
test byte [ebp + 0x74], 2
je 0x2112d2cf
movzx edx, byte [eax + 1]
sub edx, 0x80
mov dword [ebp + 0x44], edx
movzx eax, byte [eax]
sub eax, 0x80
jmp 0x2112d2ef
movzx edx, byte [eax]
sub edx, 0x80
mov dword [ebp + 0x44], edx
movzx eax, byte [eax + 1]
sub eax, 0x80
jmp 0x2112d2ef
movzx eax, byte [eax]
add eax, 0xffffff80
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], eax
cmp dword [ebp + 0x77c], esi
je 0x2112d3a2
test cl, 8
je 0x2112d3a2
test cl, 1
je 0x2112d3a2
mov eax, dword [esp + 0x20]
cdq
and ecx, 0xfffffffe
sub eax, edx
sar eax, 1
mov dword [esp + 0x14], 1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], eax
cmp dword [esp + 0x1c], esi
jne 0x2112d3a8
cmp dword [esp + 0x8d0], esi
je 0x2112d3a8
mov eax, dword [esp + 0x8cc]
mov esi, dword [esp + 0x8d0]
lea edx, [eax + esi]
mov dword [esp + 0x2c], edx
mov edx, dword [ebx + 0x19a4]
push edx
or ecx, 0x80
push ecx
mov ecx, dword [esp + 0x2c]
push 0
push 0
push ecx
lea edx, [ebp + 0x48]
push edx
mov edx, dword [esp + 0x38]
add edx, eax
lea ecx, [ebp + 0x44]
push ecx
mov ecx, dword [esp + 0x4c]
add edx, esi
push edx
lea eax, [esp + 0x4c]
push eax
mov eax, dword [ebp + 0x70c]
push ecx
push edi
lea edx, [esp + 0x44]
push edx
call eax
mov ecx, dword [esp + 0x2c]
sub ecx, esi
mov dword [esp + 0x8cc], ecx
jmp 0x2112d75d
mov dword [esp + 0x14], esi
jmp 0x2112d32c
mov edx, dword [esp + 0x8cc]
mov eax, ecx
and eax, 9
cmp eax, 9
mov dword [esp + 0x1c], edx
je 0x2112d3c1
cmp eax, esi
jne 0x2112d3fb
test cl, 2
je 0x2112d3fb
test cl, 0x30
jne 0x2112d3fb
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ebx, edx
sub ebx, edi
cmp ebx, eax
mov ecx, edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jle 0x2112d3f3
add edi, eax
mov ebx, eax
mov dword [esp + 0x18], edi
jmp 0x2112d467
mov edi, edx
mov dword [esp + 0x18], edi
jmp 0x2112d46b
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 0x18c0]
mov ecx, dword [ecx + 0x19a4]
mov edx, dword [esp + 0x10]
add eax, dword [esp + 0x8cc]
push ecx
mov ecx, dword [esp + 0x28]
or edx, 0x80
push edx
push 0
push 0
push ecx
mov esi, eax
lea edx, [ebp + 0x48]
push edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x44], eax
add eax, edx
lea ecx, [ebp + 0x44]
push ecx
mov ecx, dword [esp + 0x4c]
push eax
lea eax, [esp + 0x4c]
push eax
push ecx
lea eax, [ebp + 0x40]
push eax
mov eax, dword [ebp + 0x70c]
lea edx, [esp + 0x44]
push edx
mov dword [esp + 0x58], esi
call eax
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
sub ebx, esi
mov ecx, esi
mov dword [esp + 0x24], ebx
cmp dword [esp + 0x14], 0
je 0x2112d4b8
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
lea esi, [ecx + eax*2]
lea eax, [ecx + ebx*2]
add ebx, ebx
cmp eax, ecx
mov dword [esp + 0x24], ebx
jbe 0x2112d4ab
lea esp, [esp]
movzx edx, word [esi - 2]
sub esi, 2
sub eax, 2
mov word [eax], dx
sub eax, 2
cmp eax, ecx
mov word [eax], dx
ja 0x2112d490
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
or eax, 1
mov dword [esp + 0x10], eax
jmp 0x2112d4bc
mov eax, dword [esp + 0x10]
add dword [esp + 0x8cc], ebx
cmp dword [ebp + 0x238], 0
je 0x2112d6dd
mov ecx, ebx
shr ecx, 1
and eax, 1
mov dword [esp + 0x20], ecx
je 0x2112d4e3
sar ecx, 1
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x8d0]
test ecx, ecx
je 0x2112d4ff
cmp dword [ebp + 0x778], 0
jne 0x2112d4ff
mov edx, dword [esp + 0x1c]
add ecx, edx
jmp 0x2112d50d
mov ecx, dword [esp + 0x34]
mov ecx, dword [ecx + 0x18c0]
add ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x28], ecx
lea esi, [ebp + 0x208]
mov ecx, 0xd
lea edi, [esp + 0x50]
test eax, eax
mov eax, dword [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
je 0x2112d62f
test eax, eax
jle 0x2112d6c0
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x3c], eax
lea ebx, [ebx]
mov ebx, dword [esp + 0x5c]
imul ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x50]
movsx ecx, word [edx]
imul ecx, dword [esp + 0x70]
add eax, eax
sub eax, ebx
mov ebx, dword [esp + 0x58]
imul ebx, edi
sub eax, ebx
add eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x50]
add eax, ecx
sar eax, 0xc
cmp eax, 0xffff8000
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
jge 0x2112d5a1
mov eax, 0xffff8000
jmp 0x2112d5ad
cmp eax, 0x7fff
jle 0x2112d5ad
mov eax, 0x7fff
mov ebx, dword [esp + 0x6c]
imul ebx, dword [esp + 0x78]
mov ecx, dword [esp + 0x14]
mov word [ecx], ax
movsx ecx, word [edx + 2]
imul ecx, dword [esp + 0x70]
lea eax, [esi + esi]
sub eax, ebx
mov ebx, dword [esp + 0x68]
imul ebx, edi
sub eax, ebx
add eax, dword [esp + 0x64]
mov dword [esp + 0x64], esi
add eax, ecx
sar eax, 0xc
cmp eax, 0xffff8000
mov esi, ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x68], eax
jge 0x2112d5fd
mov eax, 0xffff8000
jmp 0x2112d609
cmp eax, 0x7fff
jle 0x2112d609
mov eax, 0x7fff
mov ecx, dword [esp + 0x14]
mov word [ecx + 2], ax
add ecx, 4
add edx, 4
sub dword [esp + 0x3c], 1
mov dword [esp + 0x14], ecx
jne 0x2112d550
mov dword [esp + 0x60], esi
jmp 0x2112d6bc
test eax, eax
jle 0x2112d6c0
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x3c], eax
jmp 0x2112d650
imul ebx, dword [esp + 0x78]
movsx ecx, word [edx]
imul ecx, dword [esp + 0x70]
lea eax, [esi + esi]
sub eax, ebx
mov ebx, edi
imul ebx, dword [esp + 0x74]
sub eax, ebx
add eax, ecx
add eax, dword [esp + 0x54]
mov dword [esp + 0x54], esi
sar eax, 0xc
cmp eax, 0xffff8000
mov ebx, edi
mov esi, ecx
mov edi, eax
jge 0x2112d68c
mov eax, 0xffff8000
jmp 0x2112d698
cmp eax, 0x7fff
jle 0x2112d698
mov eax, 0x7fff
mov ecx, dword [esp + 0x14]
mov word [ecx], ax
add ecx, 2
add edx, 2
sub dword [esp + 0x3c], 1
mov dword [esp + 0x14], ecx
jne 0x2112d650
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x50], esi
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov ecx, 8
lea esi, [esp + 0x50]
lea edi, [ebp + 0x208]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
cmp dword [ebp + 0x778], 0
jle 0x2112d723
mov edx, dword [esp + 0x8d0]
test edx, edx
je 0x2112d6f7
mov esi, dword [esp + 0x1c]
add edx, esi
mov esi, dword [esp + 0x34]
push edx
mov edx, dword [esi + 0x18c0]
add edx, dword [esp + 0x20]
and eax, 1
push eax
push edx
push ecx
push ebp
mov ecx, ebx
call fcn.2112c8e0
mov edi, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [esp + 0x24]
add esp, 0x14
jmp 0x2112d727
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x8d0], 0
jne 0x2112d761
mov edx, dword [esp + 0x38]
and eax, 1
push eax
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esi + 0x18d0]
push edx
mov edx, dword [esp + 0x50]
push eax
add esi, 0x17a0
push esi
push ecx
push ebp
mov eax, ebx
call fcn.2112c470
add esp, 0x1c
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x40], 0
jne 0x2112d792
mov ecx, dword [ebp + 0x4c]
sub edi, dword [esp + 0x88]
mov eax, dword [esp + 0x8cc]
add dword [ebp + ecx*4 + 0x1c], edi
lea ebp, [ebp + ecx*4 + 0x1c]
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
shl eax, cl
pop ebx
add esp, 0x8b0
ret
cmp edi, dword [esp + 0x30]
jae 0x2112d7f0
test byte [ebp + 0x70], 2
je 0x2112d7c9
movsx edx, word [edi]
mov ecx, dword [esp + 0x4c]
mov dword [ebp + 0x2dc], edx
movsx eax, word [edi + 2]
pop edi
mov dword [ebp + 0x2e0], eax
mov eax, dword [esp + 0x8c8]
pop esi
pop ebp
shl eax, cl
pop ebx
add esp, 0x8b0
ret
movsx eax, word [edi]
mov ecx, dword [esp + 0x4c]
pop edi
mov dword [ebp + 0x2dc], eax
mov dword [ebp + 0x2e0], eax
mov eax, dword [esp + 0x8c8]
pop esi
pop ebp
shl eax, cl
pop ebx
add esp, 0x8b0
ret
mov eax, dword [esp + 0x8cc]
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
mov dword [ebp + 0x2dc], 0x10000
pop ebp
shl eax, cl
pop ebx
add esp, 0x8b0
ret
cmp dword [esp + 0x8d0], edi
je 0x2112d840
cmp dword [esp + 0x20], edi
je 0x2112d840
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x8d0]
mov edx, dword [esp + 0x8cc]
push ecx
add edx, eax
push edi
push edx
call fcn.21136810
add esp, 0xc
mov eax, dword [esp + 0x8d4]
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
shl eax, cl
pop ebx
add esp, 0x8b0
ret