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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x30
push ebx
mov ebx, dword [esp + 0x3c]
mov ecx, eax
shl ecx, 0x11
push esi
mov esi, dword [esp + 0x48]
sar ecx, 0x11
push edi
mov edi, dword [esp + 0x48]
cmp eax, ecx
jne 0x10022156
mov edx, ebx
shl edx, 0x11
sar edx, 0x11
cmp ebx, edx
jne 0x10022156
mov ecx, edi
shl ecx, 0x11
sar ecx, 0x11
cmp edi, ecx
jne 0x10022156
mov edx, esi
shl edx, 0x11
sar edx, 0x11
cmp esi, edx
jne 0x10022156
mov dword [esp + 0x14], eax
push ebp
mov ebp, edi
sub ebp, eax
mov eax, ebp
cdq
mov ecx, eax
xor ecx, edx
mov dword [esp + 0x2c], esi
sub esi, ebx
sub ecx, edx
mov eax, esi
cdq
mov dword [esp + 0x38], esi
mov esi, eax
mov eax, dword [esp + 0x58]
xor esi, edx
sub esi, edx
mov edx, dword [eax]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x20], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
dec edx
dec eax
cmp ecx, esi
setge byte [esp + 0x13]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], eax
cmp ebx, dword [esp + 0x20]
jge 0x10021dcc
mov edx, 1
jmp 0x10021dd7
xor edx, edx
cmp ebx, eax
setle dl
dec edx
and edx, 2
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x24]
jge 0x10021de8
mov eax, 4
jmp 0x10021df7
xor ebx, ebx
cmp eax, dword [esp + 0x28]
setle bl
lea eax, [ebx - 1]
and eax, 8
or eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x20]
jge 0x10021e0e
mov edx, 1
jmp 0x10021e1b
xor edx, edx
cmp eax, dword [esp + 0x30]
setle dl
dec edx
and edx, 2
cmp edi, dword [esp + 0x24]
jge 0x10021e28
mov eax, 4
jmp 0x10021e35
xor eax, eax
cmp edi, dword [esp + 0x28]
setle al
dec eax
and eax, 8
or eax, edx
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edx, ebx
or edx, eax
je 0x1002203d
mov edi, dword [esp + 0x1c]
jmp 0x10021e54
mov eax, dword [esp + 0x34]
test eax, ebx
jne 0x100220e9
test eax, eax
je 0x10021f57
test al, 3
je 0x10021eab
test al, 1
mov eax, dword [esp + 0x20]
jne 0x10021e74
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], eax
sub eax, dword [esp + 0x48]
jns 0x10021e80
neg eax
imul eax, ecx
cmp byte [esp + 0x13], 0
lea eax, [esi + eax*2]
je 0x10021e95
mov edx, esi
sub edx, ecx
lea eax, [eax + edx - 1]
cdq
lea edi, [esi + esi]
idiv edi
test ebp, ebp
jns 0x10021ea1
neg eax
add eax, dword [esp + 0x44]
mov dword [esp + 0x18], eax
jmp 0x10021ef3
test al, 0xc
je 0x10021ef3
test al, 4
mov eax, dword [esp + 0x24]
jne 0x10021ebb
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
sub eax, dword [esp + 0x44]
jns 0x10021ec7
neg eax
imul eax, esi
cmp byte [esp + 0x13], 0
lea eax, [ecx + eax*2]
jne 0x10021edc
mov edx, ecx
sub edx, esi
lea eax, [eax + edx - 1]
cdq
lea edi, [ecx + ecx]
idiv edi
cmp dword [esp + 0x38], 0
jge 0x10021eeb
neg eax
add eax, dword [esp + 0x48]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x14], eax
jge 0x10021f04
mov edx, 1
jmp 0x10021f15
mov eax, dword [esp + 0x30]
xor edx, edx
cmp dword [esp + 0x14], eax
setle dl
dec edx
and edx, 2
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x18], eax
jge 0x10021f33
mov edi, dword [esp + 0x1c]
mov eax, 4
or eax, edx
mov dword [esp + 0x34], eax
jmp 0x10022031
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x3c]
xor eax, eax
cmp dword [esp + 0x18], edi
mov edi, dword [esp + 0x1c]
setle al
dec eax
and eax, 8
or eax, edx
mov dword [esp + 0x34], eax
jmp 0x10022031
test bl, 3
je 0x10021fa4
mov eax, dword [esp + 0x20]
test bl, 1
jne 0x10021f69
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], eax
sub eax, dword [esp + 0x50]
jns 0x10021f75
neg eax
imul eax, ecx
cmp byte [esp + 0x13], 0
lea eax, [esi + eax*2]
je 0x10021f8a
mov edx, esi
sub edx, ecx
add eax, edx
jmp 0x10021f8b
dec eax
cdq
lea edi, [esi + esi]
idiv edi
test ebp, ebp
jle 0x10021f97
neg eax
mov edx, dword [esp + 0x4c]
lea edi, [eax + edx]
mov dword [esp + 0x1c], edi
jmp 0x10021ff1
test bl, 0xc
je 0x10021ff1
mov edi, dword [esp + 0x24]
test bl, 4
jne 0x10021fb6
mov edi, dword [esp + 0x28]
mov eax, edi
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], edi
jns 0x10021fc4
neg eax
imul eax, esi
cmp byte [esp + 0x13], 0
lea eax, [ecx + eax*2]
je 0x10021fd4
dec eax
jmp 0x10021fda
mov edx, ecx
sub edx, esi
add eax, edx
cdq
lea ebx, [ecx + ecx]
idiv ebx
cmp dword [esp + 0x38], 0
jle 0x10021fe9
neg eax
add eax, dword [esp + 0x50]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x2c], eax
jge 0x10022002
mov edx, 1
jmp 0x10022013
mov eax, dword [esp + 0x30]
xor edx, edx
cmp dword [esp + 0x2c], eax
setle dl
dec edx
and edx, 2
cmp edi, dword [esp + 0x24]
jge 0x10022020
mov eax, 4
jmp 0x1002202d
xor eax, eax
cmp edi, dword [esp + 0x28]
setle al
dec eax
and eax, 8
or eax, edx
mov ebx, eax
mov edx, ebx
or edx, dword [esp + 0x34]
jne 0x10021e50
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x18]
mov dword [eax], edx
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x14]
mov dword [eax], edx
mov edx, dword [esp + 0x70]
xor eax, eax
cmp byte [esp + 0x13], al
je 0x10022097
test ebp, ebp
sets al
lea edi, [ecx + ecx]
lea ebx, [esi + esi]
inc eax
mov dword [edx], eax
mov edx, dword [esp + 0x78]
xor eax, eax
cmp dword [esp + 0x38], eax
setl al
neg ecx
lea eax, [eax*4 + 4]
mov dword [edx], eax
mov edx, dword [esp + 0x1c]
mov eax, edx
sub eax, dword [esp + 0x18]
cmp edx, dword [esp + 0x4c]
je 0x100220d1
xor ebp, ebp
jmp 0x100220d5
cmp dword [esp + 0x38], eax
lea edi, [esi + esi]
setl al
lea ebx, [ecx + ecx]
lea eax, [eax*4 + 4]
mov dword [edx], eax
mov edx, dword [esp + 0x78]
xor eax, eax
test ebp, ebp
sets al
neg esi
inc eax
mov dword [edx], eax
mov edx, dword [esp + 0x2c]
mov eax, edx
sub eax, dword [esp + 0x14]
cmp edx, dword [esp + 0x50]
je 0x100220d1
xor ebp, ebp
jmp 0x100220d5
mov ebp, dword [esp + 0x54]
cdq
xor eax, edx
sub eax, edx
mov edx, 1
sub edx, ebp
add eax, edx
mov dword [esp + 0x3c], eax
jne 0x100220f3
pop ebp
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x30
ret
mov ebp, dword [esp + 0x48]
mov eax, edi
cdq
sub eax, edx
mov edx, dword [esp + 0x14]
sar eax, 1
neg eax
cmp edx, ebp
je 0x10022114
sub edx, ebp
jns 0x1002210e
neg edx
imul edx, ecx
lea eax, [eax + edx*2]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
cmp ecx, edx
je 0x1002212c
sub ecx, edx
jns 0x10022126
neg ecx
imul ecx, esi
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x3c]
mov dword [ecx], edx
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x6c]
add eax, ebx
mov dword [ecx], eax
mov eax, dword [esp + 0x74]
sub edi, ebx
pop ebp
mov dword [edx], ebx
mov dword [eax], edi
pop edi
pop esi
mov al, 1
pop ebx
add esp, 0x30
ret
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x70]
push edx
mov edx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x70]
push edx
mov edx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x70]
push edx
mov edx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x70]
push edx
mov edx, dword [esp + 0x70]
push ecx
push edx
push esi
push edi
push ebx
push eax
call fcn.100215d0
add esp, 0x38
pop edi
pop esi
pop ebx
add esp, 0x30
ret