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

Disassembly:
sub esp, 0x70
mov ecx, dword [esp + 0x78]
push ebx
push ebp
xor ebp, ebp
push esi
mov esi, dword [esp + 0x80]
push edi
xor edi, edi
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x34], ebp
mov dword [ecx + 0xc], eax
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x2c], ebp
mov al, byte [esi]
cmp al, 0x20
je 0x10021e4d
cmp al, 9
jne 0x10021e50
inc esi
jmp 0x10021e43
cmp byte [esi], 0
mov dword [esp + 0x84], esi
je 0x10022305
movzx edx, byte [esi]
xor ebx, ebx
push edx
mov edi, esi
mov dword [esp + 0x18], ebx
call fcn.100259dc
add esp, 4
test eax, eax
je 0x10021e98
movsx ecx, byte [edi]
movzx edx, byte [edi + 1]
inc edi
lea eax, [ebx + ebx*4]
push edx
lea ebx, [ecx + eax*2 - 0x30]
call fcn.100259dc
add esp, 4
test eax, eax
jne 0x10021e78
mov dword [esp + 0x14], ebx
cmp edi, esi
mov cl, byte [edi]
mov byte [esp + 0x12], cl
jbe 0x10021f1d
cmp cl, 0x2f
je 0x10021eba
cmp cl, 0x3a
je 0x10021eba
cmp cl, 0x2e
je 0x10021eba
cmp cl, 0x2d
je 0x10021eba
test cl, cl
jne 0x10021f1d
cmp ebp, 5
mov dword [esp + 0x30], 0
jge case.default.0x10021f95
mov dword [esp + ebp*4 + 0x50], ebx
mov edx, dword [esp + 0x4c]
mov eax, edi
sub eax, esi
mov dword [esp + edx*4 + 0x68], eax
mov ebp, dword [esp + 0x4c]
inc ebp
test cl, cl
mov dword [esp + 0x4c], ebp
jne 0x10021ef6
mov esi, edi
mov dword [esp + 0x84], esi
jmp 0x10021f91
mov al, byte [edi + 1]
cmp al, 0x20
lea esi, [edi + 1]
mov dword [esp + 0x84], esi
je 0x10021f10
cmp al, 9
jne 0x10021f91
nop
mov al, byte [esi]
cmp al, 0x20
je 0x10021f1a
cmp al, 9
jne 0x10021eea
inc esi
jmp 0x10021f10
mov eax, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x94]
lea ecx, [esp + 0x17]
push ecx
lea edx, [esp + 0x30]
push edx
push eax
mov ebx, esi
mov dword [esp + 0x34], 0
call fcn.10021c30
add esp, 0x10
test eax, eax
mov dword [esp + 0x30], eax
jne 0x10021f82
cmp ebp, 5
jge case.default.0x10021f95
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x88]
push edx
lea edi, [esp + 0x54]
call fcn.10020c60
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0x54]
add esp, 8
mov byte [esp + 0x12], al
cmp dword [esp + 0x30], 4
ja case.default.0x10021f95
mov cl, byte [esp + 0x12]
mov eax, dword [esp + 0x30]
jmp dword [eax*4 + 0x100224f8]
cmp cl, 0x3a
je 0x10021fb3
cmp cl, 0x2e
jne 0x10022122
cmp ebp, 4
jne 0x10022134
mov eax, dword [esp + 0x1c]
test eax, eax
jne case.default.0x10021f95
mov eax, dword [esp + 0x24]
test eax, eax
jne case.default.0x10021f95
mov ecx, dword [esp + 0x88]
dec ebp
mov dword [esp + 0x4c], ebp
mov al, byte [esp + ebp*4 + 0x50]
mov byte [ecx + 7], al
movzx edx, byte [esi]
push edx
mov dword [esp + 0x20], 1
call fcn.100259dc
add esp, 4
test eax, eax
je 0x100220ce
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x88]
push ecx
lea edi, [esp + 0x54]
call fcn.10020c60
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x90]
add esp, 8
dec ebp
cmp al, 0x3a
mov dword [esp + 0x4c], ebp
mov dl, byte [esp + ebp*4 + 0x50]
mov byte [ebx + 8], dl
je 0x10022036
cmp al, 0x2e
jne 0x100220c7
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x88]
push ecx
lea edi, [esp + 0x54]
call fcn.10020c60
mov ebp, dword [esp + 0x54]
add esp, 8
dec ebp
cmp al, 0x2e
mov dword [esp + 0x4c], ebp
mov dl, byte [esp + ebp*4 + 0x50]
mov byte [ebx + 9], dl
je 0x1002206b
cmp al, 0x3a
je 0x1002206b
cmp al, 0x2d
jne 0x100220c7
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x88]
push ecx
lea edi, [esp + 0x54]
call fcn.10020c60
mov ebp, dword [esp + 0x54]
mov edx, dword [esp + ebp*4 + 0x6c]
mov ecx, dword [esp + 0x1c]
add esp, 8
cmp edx, 6
jae 0x100220ab
mov eax, 6
sub eax, edx
add edx, eax
mov edi, edi
lea ecx, [ecx + ecx*4]
shl ecx, 1
dec eax
jne 0x100220a0
cmp edx, 6
jbe 0x100220bf
lea esi, [edx - 6]
mov eax, 0xcccccccd
mul ecx
shr edx, 3
dec esi
mov ecx, edx
jne 0x100220b0
dec ebp
mov dword [ebx + 0xc], ecx
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0x84]
cmp byte [esi], 0
mov edi, 1
jne 0x10021e60
cmp ebp, 3
mov ebx, dword [esp + 0x20]
je 0x10022101
test ebx, ebx
je 0x10022309
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10022309
cmp ebp, edi
jne 0x10022309
mov esi, dword [esp + 0x88]
test ebp, ebp
jg 0x1002236e
test edi, edi
jne 0x100224cd
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x70
ret
cmp cl, 0x2f
je 0x1002212c
cmp cl, 0x2d
jne 0x10022134
mov dword [esp + 0x24], 1
cmp ebp, 3
jl 0x10022141
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x18]
test eax, eax
mov ecx, 1
jne 0x1002215c
mov edx, dword [esp + 0x88]
mov byte [edx + 6], cl
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x10022183
cmp ebp, ecx
jne 0x100220ce
cmp dword [esp + 0x68], 4
jb 0x100220ce
mov dword [esp + 0x8c], ecx
jmp 0x100220ce
test eax, eax
jne 0x100220ce
mov edx, dword [esp + 0x88]
dec ebp
mov dword [esp + 0x4c], ebp
mov al, byte [esp + ebp*4 + 0x50]
mov byte [edx + 6], al
mov dword [esp + 0x18], ecx
jmp 0x100220ce
mov edx, dword [esp + 0x28]
lea eax, [edx + esi]
call fcn.10020c10
mov esi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x84], esi
jne 0x100221e9
test ebp, ebp
jle case.default.0x10021f95
mov ecx, dword [esp + 0x88]
dec ebp
mov dword [esp + 0x4c], ebp
mov al, byte [esp + ebp*4 + 0x50]
mov byte [ecx + 7], al
mov dword [esp + 0x1c], 1
jmp 0x100221f0
mov ecx, dword [esp + 0x88]
mov al, byte [ecx + 7]
cmp al, 0xc
jae 0x100220ce
add al, 0xc
mov byte [ecx + 7], al
jmp 0x100220ce
mov ecx, dword [esp + 0x28]
lea eax, [ecx + esi]
call fcn.10020c10
mov esi, eax
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x84], esi
jne 0x10022247
test ebp, ebp
jle case.default.0x10021f95
mov ecx, dword [esp + 0x88]
dec ebp
mov dword [esp + 0x4c], ebp
mov dl, byte [esp + ebp*4 + 0x50]
mov byte [ecx + 7], dl
mov dword [esp + 0x1c], 1
jmp 0x1002224e
mov ecx, dword [esp + 0x88]
mov al, byte [ecx + 7]
cmp al, 0xc
jne 0x1002225e
mov byte [ecx + 7], 0
jmp 0x100220ce
ja case.default.0x10021f95
jmp 0x100220ce
mov eax, dword [esp + 0x28]
add eax, esi
call fcn.10020c10
mov cl, byte [esp + 0x13]
mov esi, eax
mov eax, dword [esp + 0x88]
mov byte [eax + 2], cl
mov ecx, dword [esp + 0x20]
test ecx, ecx
mov dword [esp + 0x84], esi
jne case.default.0x10021f95
mov ecx, 1
mov dword [esp + 0x20], ecx
mov byte [eax + 6], cl
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x8c], 3
jne 0x100220ce
test ebp, ebp
mov dword [esp + 0x18], 1
jle 0x100220ce
dec ebp
mov dword [esp + 0x4c], ebp
mov dl, byte [esp + ebp*4 + 0x50]
mov byte [eax + 6], dl
jmp 0x100220ce
mov eax, dword [esp + 0x28]
add eax, esi
call fcn.10020c10
mov ecx, dword [esp + 0x88]
mov dl, byte [esp + 0x13]
mov esi, eax
mov dword [esp + 0x84], esi
mov byte [ecx + 3], dl
mov dword [esp + 0x38], 1
jmp 0x100220ce
mov ebx, dword [esp + 0x20]
lea eax, [esp + 0x3c]
push eax
call fcn.1001d3b0
mov esi, dword [esp + 0x8c]
mov eax, dword [esp + 0x3c]
mov cx, word [esp + 0x44]
mov dx, word [esp + 0x40]
add esp, 4
test eax, eax
mov word [esi + 4], cx
mov word [esi], dx
jne 0x1002233d
mov al, byte [esp + 0x3f]
mov byte [esi + 3], al
test ebx, ebx
jne 0x10022348
mov cl, byte [esp + 0x3e]
mov byte [esi + 2], cl
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x10022108
mov eax, dword [esp + 0x34]
test eax, eax
mov eax, 1
jne 0x10022366
movzx eax, byte [esp + 0x42]
mov byte [esi + 6], al
jmp 0x10022108
cmp ebp, 1
jne 0x1002243d
test ebx, ebx
je 0x10022399
mov ax, word [esp + 0x50]
mov edx, dword [esp + 0x68]
mov word [esi], ax
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x2c], edx
jne 0x100223fa
mov byte [esi + 6], 1
jmp 0x100223fa
mov edi, dword [esp + 0x50]
push 0x64
push edi
call fcn.1002540b
mov ecx, dword [esp + 0x70]
add esp, 8
cmp ecx, 6
je 0x100223e4
cmp ecx, 8
je 0x100223e4
cmp ecx, 4
jne case.default.0x10021f95
push 0x64
push edi
mov byte [esi + 6], 1
call fcn.1002540b
mov ecx, dword [esp + 0x94]
add esp, 8
cmp ecx, 1
je 0x100223f2
dec al
mov byte [esi + 2], al
mov word [esi], dx
jmp 0x100223fa
push 0x64
push eax
mov byte [esi + 6], dl
call fcn.1002540b
add esp, 8
dec dl
mov byte [esi + 2], dl
mov word [esi], ax
mov ax, word [esi]
cmp ax, 0x64
jae 0x100224e7
cmp dword [esp + 0x2c], 2
ja 0x100224e7
mov edx, dword [esp + 0x94]
movzx ecx, ax
cmp ecx, edx
jae 0x100224df
add eax, 0x7d0
push esi
mov word [esi], ax
call fcn.10021d90
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret
cmp ebp, 3
mov eax, dword [esp + 0x8c]
jne 0x10022478
cmp eax, 1
je 0x10022467
mov ecx, dword [esp + 0x70]
mov dx, word [esp + 0x58]
mov ebp, 2
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], ebp
mov word [esi], dx
cmp eax, 3
je 0x10022478
dec ebp
mov dword [esp + 0x4c], ebp
mov cl, byte [esp + ebp*4 + 0x50]
mov byte [esi + 6], cl
test ebx, ebx
jne 0x1002248a
dec ebp
mov dword [esp + 0x4c], ebp
mov dl, byte [esp + ebp*4 + 0x50]
dec dl
mov byte [esi + 2], dl
cmp eax, 3
jne 0x100224ab
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x100224ab
test ebp, ebp
jle 0x100223fa
dec ebp
mov dword [esp + 0x4c], ebp
mov cl, byte [esp + ebp*4 + 0x50]
mov byte [esi + 6], cl
test ebp, ebp
jle 0x100223fa
cmp eax, 1
jne 0x100224cd
mov edx, dword [esp + ebp*4 + 0x64]
dec ebp
mov dword [esp + 0x4c], ebp
mov ax, word [esp + ebp*4 + 0x50]
mov dword [esp + 0x2c], edx
mov word [esi], ax
test ebp, ebp
jle 0x100223fa
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x70
ret
add eax, 0x76c
mov word [esi], ax
push esi
call fcn.10021d90
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret