Function at 0x10020fd0
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x908
mov eax, dword [0x100682c0]
push esi
mov esi, dword [esp + 0x910]
mov dword [esp + 0x908], eax
mov ax, word [esi + 0x26]
cmp ax, 0xfa
ja 0x1002241b
push ebx
xor ebx, ebx
cmp ax, bx
push ebp
push edi
mov byte [esp + 0x17], 0x61
mov dword [esp + 0x20], ebx
jb 0x10021fda
nop
mov eax, dword [esi + 0x34]
mov dl, byte [eax + ebx]
cmp dl, 3
mov ebp, dword [esp + 0x20]
mov byte [esp + ebp + 0x71c], 0
mov byte [esp + 0x13], dl
jne 0x1002105e
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
lea edi, [ecx + eax]
mov al, byte [edi + 3]
and al, dl
cmp al, 1
jne 0x10021056
mov cl, byte [edi + 4]
and cl, dl
cmp cl, 2
je 0x1002105e
cmp al, 3
jne 0x10021101
cmp dl, 4
je 0x10021101
cmp dl, 1
je 0x10021101
cmp dl, 2
jne 0x1002108f
mov eax, dword [esi + 0x3c]
lea ecx, [eax + ebx]
mov al, byte [ecx]
cmp al, 0x28
je 0x1002108f
cmp al, 0x29
je 0x1002108f
cmp al, 0x22
jne 0x10021101
cmp byte [ecx + 1], 0x22
je 0x10021101
cmp dl, 5
jne 0x100210f1
test ebp, ebp
jle 0x100210a0
mov byte [esp + ebp + 0x71b], 1
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + edx*4 + 4]
mov edx, dword [esi + 0x14]
mov al, byte [ecx + edx + 6]
and al, 6
cmp al, 6
jne 0x100210e1
mov eax, dword [esi + 0x34]
mov cl, byte [eax + ebx + 1]
mov byte [esp + ebx + 0x38], 0x21
inc ebx
cmp cl, 4
jne 0x100210e7
mov byte [esp + ebx + 0x38], 0x5f
inc ebx
mov byte [esp + ebx + 0x38], 0
jmp 0x10021fce
mov byte [esp + ebx + 0x38], 0x3f
inc ebx
mov byte [esp + ebx + 0x38], 0
jmp 0x10021fce
mov byte [esp + ebx + 0x38], 0x2e
inc ebx
mov byte [esp + ebx + 0x38], 0
jmp 0x10021fce
xor eax, eax
mov byte [esp + ebp + 0x32c], 0
mov dword [esp + 0x18], eax
mov byte [esp + ebp + 0x428], bl
mov dword [esp + 0x28], eax
lea ebx, [ebx]
mov dl, byte [esp + 0x13]
cmp dl, 3
je 0x1002112e
cmp dl, 8
jne 0x10021178
mov eax, dword [esp + 0x20]
mov cl, byte [esp + eax + 0x32c]
inc cl
cmp dl, 8
mov byte [esp + eax + 0x32c], cl
mov dword [esp + 0x28], 1
jne 0x10021178
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
mov al, byte [eax + ecx + 5]
cmp al, 0x73
je 0x1002120f
cmp al, 0x61
je 0x1002120f
cmp dl, 1
jne 0x1002119c
mov eax, dword [esi + 0x30]
mov ecx, dword [0x1006be90]
mov edi, dword [eax + ebx*4]
cmp edi, dword [ecx + 0xd8]
lea eax, [eax + ebx*4]
jne 0x1002120f
mov eax, dword [eax + 4]
cmp eax, dword [ecx + 0x10]
jne 0x1002120f
cmp dl, 2
jne 0x100211bd
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
cmp byte [eax + ecx + 4], 0x61
je 0x1002120f
cmp dl, 3
jne 0x100211e5
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
add eax, ecx
mov cl, byte [eax + 2]
test cl, cl
js 0x100211e5
cmp byte [eax + 3], dl
jne 0x1002120f
cmp dl, 4
jne 0x10021394
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + edx*4 + 4]
mov edx, dword [esi + 0x14]
mov al, byte [ecx + edx + 2]
test al, al
js 0x10021394
mov eax, dword [esp + 0x20]
movzx ebp, byte [esp + eax + 0x428]
mov ecx, dword [esp + 0x18]
mov al, byte [esp + 0x17]
lea edx, [ecx + ebp]
mov byte [esp + edx + 0x38], al
mov edx, dword [esi + 0x38]
movzx eax, word [edx + ebx*2]
mov edx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [edx + eax*4 + 4]
mov edx, dword [esi + 0x14]
mov dl, byte [eax + edx + 3]
mov al, dl
and al, 0xc0
cmp al, 0x80
jne 0x1002124f
mov al, 0x6d
jmp 0x1002125b
cmp al, 0x40
setne al
lea eax, [eax*8 + 0x66]
and dl, 0xc
cmp dl, 4
jne 0x10021273
movzx eax, al
push eax
call fcn.10057843
mov ecx, dword [esp + 0x1c]
add esp, 4
mov edx, dword [esi + 0x38]
mov byte [esp + ecx + 0x620], al
movzx eax, word [edx + ebx*2]
mov edx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [edx + eax*4 + 4]
mov edx, dword [esi + 0x14]
mov al, byte [eax + edx + 3]
mov byte [esp + 0x34], al
and al, 0xcc
mov byte [esp + ecx + 0x524], al
inc ecx
mov al, byte [esp + ecx + 0x523]
test al, al
lea edi, [esp + ecx + 0x523]
mov dword [esp + 0x18], ecx
jne 0x100212ba
mov byte [edi], 0xcc
mov eax, dword [esi + 0x34]
add eax, ebx
mov dword [esp + 0x24], eax
mov al, byte [eax]
cmp al, 3
jne 0x100213c1
mov edx, dword [esp + 0x20]
cmp byte [esp + edx + 0x32c], 1
jbe 0x100212e6
mov byte [esp + ecx + 0x61f], 0x2a
mov byte [edi], 0
cmp al, 3
jne 0x100213c1
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + ebx*4]
mov edx, dword [0x1006be90]
cmp ecx, dword [edx + 0x4c]
jne 0x100213c1
test ebx, ebx
jle 0x100213c1
mov eax, dword [esp + 0x24]
cmp byte [eax - 1], 6
jne 0x100213c1
mov ecx, dword [esp + 0x20]
mov al, byte [esp + ecx + 0x32c]
test al, al
je 0x100213c1
mov edx, dword [esp + 0x34]
push 0x88
push edx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x1002135b
mov eax, dword [esp + 0x18]
lea ecx, [eax + ebp]
mov byte [edi], 0
mov byte [esp + ecx + 0x37], 0x2a
mov byte [esp + eax + 0x61f], 0x2a
jmp 0x100213c1
mov edx, dword [esi + 0x38]
movzx eax, word [edx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx edx, word [ecx + eax*4 + 4]
mov eax, dword [esi + 0x14]
mov byte [edx + eax + 3], 0x88
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + edx*4 + 4]
mov edx, dword [esi + 0x14]
mov byte [ecx + edx + 3], 0x88
mov byte [edi], 0x88
jmp 0x100213c1
mov eax, dword [esp + 0x20]
movzx ebp, byte [esp + eax + 0x428]
mov eax, dword [esp + 0x18]
lea ecx, [eax + ebp]
mov byte [esp + eax + 0x620], 0x5f
mov byte [esp + eax + 0x524], 0
inc eax
mov byte [esp + ecx + 0x38], 0x2e
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
inc ebx
test eax, eax
je 0x100213ed
mov edx, dword [esp + 0x18]
lea edi, [edx + ebp]
movzx eax, byte [esp + edi + 0x37]
lea edi, [esp + edi + 0x37]
push eax
mov dword [esp + 0x2c], 0
call fcn.10057843
add esp, 4
mov byte [edi], al
mov ecx, dword [esi + 0x34]
lea eax, [ebx + ecx]
mov cl, byte [eax - 1]
cmp cl, 4
mov dword [esp + 0x24], eax
mov byte [esp + 0x16], cl
jne 0x10021424
mov edx, dword [esi + 0x3c]
cmp byte [edx + ebx - 1], 0x2c
jne 0x10021424
mov ecx, dword [esp + 0x20]
cmp byte [esp + ecx + 0x32c], 1
jae 0x10021424
cmp byte [eax], 3
je 0x10021a67
movzx ecx, word [esi + 0x26]
cmp ebx, ecx
jg 0x10021a67
mov edx, dword [esp + 0x24]
mov dl, byte [edx]
cmp dl, 5
mov byte [esp + 0x13], dl
je 0x10021a67
cmp dl, 1
je 0x1002144d
cmp dl, 2
jne 0x1002145f
mov eax, dword [esp + 0x20]
cmp byte [esp + eax + 0x32c], 0
ja 0x10021a67
cmp dl, 8
jne 0x100214b5
mov al, byte [esp + 0x16]
cmp al, 6
je 0x10021a67
mov edi, dword [esi + 0x3c]
cmp byte [edi + ebx - 1], 0
jne 0x10021a67
mov edi, dword [esp + 0x20]
cmp byte [esp + edi + 0x32c], 0
jne 0x10021a67
cmp al, 4
jne 0x100214b5
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2 - 2]
mov edi, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [edi + eax*4 + 4]
mov edi, dword [esi + 0x14]
cmp byte [eax + edi + 4], 0x6e
jne 0x10021a67
cmp byte [esp + 0x16], 8
jne 0x100214cd
cmp dl, 4
jne 0x10021a67
cmp ebx, ecx
jne 0x10021a67
cmp dl, 3
jne 0x10021527
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
mov al, byte [eax + ecx + 3]
and al, dl
cmp al, dl
je 0x10021a67
cmp dl, dl
jne 0x10021527
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
add eax, ecx
mov cl, byte [eax + 3]
and cl, dl
cmp cl, 1
jne 0x10021527
mov al, byte [eax + 4]
and al, dl
cmp al, 2
je 0x10021a67
cmp dl, 6
jne 0x1002159e
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
cmp byte [eax + ecx + 3], 0x63
jne 0x10021a67
cmp dl, dl
jne 0x1002159e
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
test byte [ecx + eax + 2], 1
jne 0x10021a67
cmp dl, dl
jne 0x1002159e
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
mov ecx, dword [esi + 4]
mov edi, dword [esi + 0x14]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
movzx ecx, word [eax + 4]
cmp byte [ecx + edi + 3], 0x63
jne 0x1002159e
mov eax, dword [eax + 8]
cmp byte [eax], 0x6f
je 0x10021a67
cmp dl, 1
je 0x100215a8
cmp dl, 2
jne 0x100215d4
cmp byte [esp + 0x16], 4
jne 0x10021a67
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2 - 2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
cmp byte [eax + ecx + 4], 0x6e
jne 0x10021a67
mov eax, dword [esi + 0x3c]
mov cl, byte [eax + ebx - 1]
cmp cl, 0x3a
lea edi, [eax + ebx]
mov byte [esp + 0x14], cl
je 0x10021a67
cmp cl, 0x3b
je 0x10021a67
cmp cl, 0x2e
je 0x10021a67
cmp cl, 0x28
je 0x10021a67
cmp cl, 0x29
je 0x10021a67
cmp dl, 7
jne 0x10021634
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2]
mov ebp, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ebp + eax*4 + 4]
mov ebp, dword [esi + 0x14]
cmp byte [eax + ebp + 3], 0x74
je 0x10021a67
cmp dl, 3
jne 0x10021655
mov eax, dword [esp + 0x20]
cmp byte [esp + eax + 0x32c], 0
mov al, byte [esp + 0x16]
je 0x10021659
cmp al, dl
jne 0x10021a67
jmp 0x10021659
mov al, byte [esp + 0x16]
cmp dl, 3
jne 0x10021679
mov ebp, dword [esp + 0x20]
cmp byte [esp + ebp + 0x32c], 0
je 0x10021679
cmp al, dl
jne 0x10021679
cmp cl, 0x2c
je 0x10021a67
cmp dl, 7
jne 0x1002168f
test ebx, ebx
jle 0x1002168f
cmp al, 3
jne 0x1002168f
cmp cl, 0x2c
je 0x10021a67
cmp dl, 3
jne 0x100216a6
mov ebp, dword [esp + 0x20]
cmp byte [esp + ebp + 0x32c], 2
je 0x10021a67
test ebx, ebx
jle 0x1002175f
cmp dl, 4
jne 0x1002175f
cmp al, 3
jne 0x1002175f
mov edx, dword [esp + 0x24]
cmp byte [edx + 1], 3
jne 0x10021763
cmp byte [edi], 0
jne 0x10021763
mov ecx, dword [esi + 0x38]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
lea eax, [ecx + ebx*2]
movzx ecx, word [eax - 2]
movzx eax, word [eax]
lea edx, [ecx + ecx*2]
movzx ecx, word [edi + edx*4 + 4]
xor edx, edx
mov dl, byte [ecx + ebp + 3]
lea eax, [eax + eax*2]
movzx ecx, word [edi + eax*4 + 4]
and edx, 0xffffffcc
push edx
xor edx, edx
mov dl, byte [ecx + ebp + 3]
and edx, 0xffffffcc
push edx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x1002175b
mov eax, dword [esi + 0x38]
movzx ecx, word [eax + ebx*2 + 2]
lea eax, [eax + ebx*2]
movzx eax, word [eax]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
and ecx, 0xffffffcc
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
and ecx, 0xffffffcc
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x10021a67
mov cl, byte [esp + 0x14]
mov edx, dword [esp + 0x24]
cmp byte [esp + 0x13], 4
jne 0x100217ad
mov eax, dword [esi + 0x38]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
lea ecx, [eax + ebx*2]
movzx eax, word [ecx]
lea eax, [eax + eax*2]
movzx eax, word [edi + eax*4 + 4]
cmp byte [eax + ebp + 4], 0x6e
jne 0x100217a9
cmp byte [edx + 1], 4
jne 0x100217a9
movzx eax, word [ecx + 2]
lea ecx, [eax + eax*2]
movzx edx, word [edi + ecx*4 + 4]
cmp byte [edx + ebp + 4], 0x6e
je 0x10021a67
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x14]
cmp ebx, 2
jle 0x100217fb
cmp byte [edx - 1], 4
jne 0x100217fb
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2 - 2]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
lea eax, [eax + eax*2]
movzx eax, word [edi + eax*4 + 4]
cmp byte [eax + ebp + 4], 0x6e
jne 0x100217f7
cmp byte [edx - 2], 4
jne 0x100217f7
movzx eax, word [ecx + ebx*2 - 4]
lea ecx, [eax + eax*2]
movzx edx, word [edi + ecx*4 + 4]
cmp byte [edx + ebp + 4], 0x6e
je 0x10021a67
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x14]
cmp ebx, 1
jle 0x100218dd
cmp byte [esp + 0x13], 4
jne 0x100218dd
cmp byte [edx - 2], 3
jne 0x10021886
cmp byte [edx - 1], 4
jne 0x10021886
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebx*2 - 2]
mov edi, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [edi + eax*4 + 4]
mov edi, dword [esi + 0x14]
cmp byte [eax + edi + 4], 0x6e
je 0x10021886
mov eax, dword [esi + 0x38]
movzx ecx, word [eax + ebx*2 - 4]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
movzx eax, word [eax + ebx*2]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
and ecx, 0xffffffcc
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
and ecx, 0xffffffcc
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x10021a67
mov edx, dword [esp + 0x24]
mov cl, byte [esp + 0x14]
cmp byte [esp + 0x13], 4
jne 0x100218dd
cmp byte [edx - 1], 3
jne 0x100218dd
test cl, cl
je 0x100218dd
mov eax, dword [esi + 0x38]
movzx ecx, word [eax + ebx*2 - 4]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
movzx eax, word [eax + ebx*2]
lea edx, [ecx + ecx*2]
movzx ecx, word [edi + edx*4 + 4]
xor edx, edx
mov dl, byte [ecx + ebp + 3]
lea eax, [eax + eax*2]
movzx ecx, word [edi + eax*4 + 4]
and edx, 0xffffffcc
push edx
xor edx, edx
mov dl, byte [ecx + ebp + 3]
and edx, 0xffffffcc
push edx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x10021a67
cmp byte [esp + 0x13], 0xa
je 0x10021a67
test ebx, ebx
jle 0x10021912
mov eax, dword [esi + 0x30]
mov ecx, dword [0x1006be90]
mov edx, dword [eax + ebx*4]
cmp edx, dword [ecx + 0xa8]
lea eax, [eax + ebx*4]
jne 0x10021912
mov eax, dword [eax - 4]
cmp eax, dword [ecx + 0xac]
je 0x10021a67
cmp byte [esp + 0x13], 2
jne 0x10021939
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + edx*4 + 4]
mov edx, dword [esi + 0x14]
cmp byte [ecx + edx + 4], 0x61
jne 0x10021a67
test ebx, ebx
jle 0x100219eb
mov eax, dword [esp + 0x24]
cmp byte [eax - 1], 3
jne 0x100219eb
cmp byte [esp + 0x13], 3
jne 0x100219eb
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 1], 4
jne 0x100219eb
mov edx, dword [esi + 0x38]
movzx ecx, word [edx + ebx*2 + 2]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
lea eax, [edx + ebx*2]
movzx eax, word [eax - 2]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
and ecx, 0xffffffcc
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
and ecx, 0xffffffcc
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x100219eb
mov edx, dword [esi + 0x38]
movzx ecx, word [edx + ebx*2 + 2]
lea eax, [edx + ebx*2]
movzx eax, word [eax]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
and ecx, 0xffffffcc
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
and ecx, 0xffffffcc
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x10021a67
cmp byte [esp + 0x13], 6
jne 0x10021120
mov edx, dword [esp + 0x20]
mov al, byte [esp + edx + 0x32c]
test al, al
je 0x10021a1a
mov eax, dword [esp + 0x24]
cmp byte [eax + 1], 4
jne 0x10021a1a
mov al, byte [eax + 2]
cmp al, 3
je 0x10021a67
cmp al, 8
je 0x10021a67
cmp byte [esp + 0x13], 6
jne 0x10021120
mov eax, dword [esp + 0x24]
cmp byte [eax + 1], 4
jne 0x10021120
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebx*2 + 2]
lea edx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + edx*4 + 4]
mov edx, dword [esi + 0x14]
cmp byte [ecx + edx + 4], 0x6e
jne 0x10021120
mov eax, dword [esp + 0x20]
mov cl, byte [esp + eax + 0x32c]
test cl, cl
je 0x10021120
mov ecx, dword [esp + 0x20]
mov cl, byte [esp + ecx + 0x428]
mov eax, dword [esp + 0x18]
movzx edi, cl
lea edx, [edi + eax]
mov byte [esp + edx + 0x38], 0
mov edx, dword [esi + 0x34]
mov byte [esp + eax + 0x620], 0
dec eax
add edx, edi
cmp byte [edx + eax], 4
mov byte [esp + 0x15], cl
mov dword [esp + 0x2c], edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edx
jne 0x10021b5a
mov edx, dword [esi + 0x3c]
add edx, edi
cmp byte [edx + eax], 0
jne 0x10021b5a
mov edx, dword [esi + 0x38]
mov ebp, dword [esi + 4]
add edi, eax
movzx edx, word [edx + edi*2]
lea edx, [edx + edx*2]
movzx edx, word [ebp + edx*4 + 4]
mov ebp, dword [esi + 0x14]
cmp byte [edx + ebp + 4], 0x6e
jne 0x10021ae5
test edi, edi
jle 0x10021b56
mov edx, dword [esp + 0x24]
cmp byte [edx + eax - 1], 7
jne 0x10021b56
mov edx, dword [esp + 0x24]
mov dl, byte [edx + eax + 1]
cmp dl, 3
je 0x10021af7
cmp dl, 4
jne 0x10021b56
mov edx, dword [esp + 0x20]
cmp byte [esp + edx + 0x32c], 0
je 0x10021b56
mov eax, dword [esi + 0x38]
movzx ecx, word [eax + edi*2 + 2]
mov ebp, dword [esi + 0x14]
lea eax, [eax + edi*2]
mov edi, dword [esi + 4]
movzx eax, word [eax]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
push ecx
call fcn.1001de40
mov edi, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10021b4c
dec dword [esp + 0x18]
dec ebx
mov eax, dword [esp + 0x18]
mov cl, byte [esp + 0x15]
jmp 0x10021b5a
mov edi, dword [esp + 0x2c]
mov dl, byte [esp + eax + 0x524]
test dl, dl
jne 0x10021b79
test eax, eax
jle 0x10021ea9
mov dl, byte [esp + eax + 0x523]
dec eax
test dl, dl
je 0x10021b65
test eax, eax
jle 0x10021ea9
mov edx, dword [esp + 0x20]
add cl, al
lea ebp, [eax + 1]
mov byte [esp + edx + 0x230], cl
xor edx, edx
test ebp, ebp
mov byte [esp + 0x15], 0
mov byte [esp + 0x1f], 0
mov byte [esp + 0x14], 0
mov byte [esp + 0x16], 0
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], ebp
jle 0x10021c8b
mov eax, dword [esi + 0x34]
add eax, edi
lea ebp, [edi + edi]
mov dword [esp + 0x24], eax
jmp 0x10021bd0
mov al, byte [esp + edx + 0x524]
test al, al
je 0x10021c75
mov ecx, dword [esp + 0x24]
cmp byte [ecx + edx], 3
jne 0x10021c2f
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebp]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
mov cl, byte [ecx + eax + 3]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x10021c12
inc byte [esp + 0x14]
mov edx, dword [esp + 0x18]
cmp al, 0x40
jne 0x10021c1a
inc byte [esp + 0x16]
and cl, 0xc
cmp cl, 8
jne 0x10021c26
inc byte [esp + 0x1f]
cmp cl, 4
jne 0x10021c2f
inc byte [esp + 0x15]
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebp]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
mov cl, byte [eax + ecx + 3]
mov al, cl
and al, 0xc0
cmp al, 0x80
jne 0x10021c58
inc byte [esp + 0x14]
mov edx, dword [esp + 0x18]
cmp al, 0x40
jne 0x10021c60
inc byte [esp + 0x16]
and cl, 0xc
cmp cl, 8
jne 0x10021c6c
inc byte [esp + 0x1f]
cmp cl, 4
jne 0x10021c75
inc byte [esp + 0x15]
mov eax, dword [esp + 0x28]
inc edx
add ebp, 2
cmp edx, eax
mov dword [esp + 0x18], edx
jl 0x10021bd0
mov ebp, eax
mov al, byte [esp + 0x14]
mov cl, byte [esp + 0x16]
cmp al, cl
mov byte [esp + 0x13], 0
jb 0x10021ca9
test al, al
jbe 0x10021ca5
mov byte [esp + 0x13], 0x80
cmp cl, al
jbe 0x10021cb2
test cl, cl
jbe 0x10021cb2
mov byte [esp + 0x13], 0x40
mov al, byte [esp + 0x1f]
mov cl, byte [esp + 0x15]
cmp al, cl
jb 0x10021ccb
test al, al
jbe 0x10021cc7
add byte [esp + 0x13], 8
cmp cl, al
jbe 0x10021cd4
test cl, cl
jbe 0x10021cd4
add byte [esp + 0x13], 4
xor eax, eax
cmp ebp, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], eax
jle 0x10021e7c
mov eax, dword [esi + 0x34]
lea edx, [edi*4]
lea ebp, [edi + edi]
add edi, eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x24], edi
lea ecx, [ecx]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov dl, byte [eax + ecx]
cmp dl, 8
jne 0x10021d39
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebp]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
mov al, byte [ecx + eax + 5]
cmp al, 0x73
je 0x10021de8
cmp al, 0x61
je 0x10021de8
cmp dl, 1
jne 0x10021d68
mov ecx, dword [esi + 0x30]
mov eax, dword [esp + 0x30]
mov edi, dword [eax + ecx]
add eax, ecx
mov ecx, dword [0x1006be90]
cmp edi, dword [ecx + 0xd8]
jne 0x10021de8
mov eax, dword [eax + 4]
cmp eax, dword [ecx + 0x10]
jne 0x10021de8
cmp dl, 2
jne 0x10021d89
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + ebp]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
cmp byte [eax + ecx + 4], 0x61
je 0x10021de8
cmp dl, 3
jne 0x10021dc2
mov eax, dword [esi + 0x38]
movzx eax, word [eax + ebp]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
add eax, ecx
mov cl, byte [eax + 2]
test cl, cl
js 0x10021dc2
mov cl, byte [eax + 3]
cmp cl, dl
jne 0x10021de8
cmp cl, 1
jne 0x10021dc2
mov cl, byte [eax + 4]
and cl, dl
cmp cl, 2
jne 0x10021de8
cmp dl, 4
jne 0x10021e55
mov edx, dword [esi + 0x38]
movzx eax, word [edx + ebp]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx edx, word [ecx + eax*4 + 4]
mov eax, dword [esi + 0x14]
mov cl, byte [edx + eax + 2]
test cl, cl
js 0x10021e55
mov ecx, dword [esp + 0x18]
mov al, byte [esp + 0x13]
mov cl, byte [esp + ecx + 0x524]
and al, 0xcc
and cl, 0xcc
movzx edi, al
movzx edx, cl
add edi, edx
cmp edi, 0x44
je 0x10021e55
cmp edi, 0x48
je 0x10021e55
cmp edi, 0x84
je 0x10021e55
cmp edi, 0x88
je 0x10021e55
test al, 0xc0
jne 0x10021e24
or al, 0xc0
test cl, 0xc0
jne 0x10021e2c
or cl, 0xc0
test al, 0xc
jne 0x10021e32
or al, 0xc
test cl, 0xc
jne 0x10021e3a
or cl, 0xc
cmp al, cl
movzx edi, al
jb 0x10021e44
movzx edi, cl
movzx eax, al
movzx ecx, cl
and eax, ecx
sub eax, edi
neg eax
sbb eax, eax
inc eax
je 0x10021e59
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
inc eax
add edi, 4
add ebp, 2
cmp eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], edi
jl 0x10021d00
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
cmp edi, edx
mov dl, byte [esp + 0x13]
setne cl
mov byte [esp + eax + 0x818], cl
mov byte [esp + eax + 0x134], dl
inc eax
mov dword [esp + 0x20], eax
jmp 0x10021fca
mov edx, dword [esp + 0x24]
mov dl, byte [edx]
cmp dl, 8
mov byte [esp + 0x15], dl
jne 0x10021ee7
mov edx, dword [esi + 0x38]
movzx edx, word [edx + edi*2]
mov ebp, dword [esi + 4]
lea edx, [edx + edx*2]
movzx edx, word [ebp + edx*4 + 4]
mov ebp, dword [esi + 0x14]
mov dl, byte [edx + ebp + 5]
cmp dl, 0x73
je 0x10021f8d
cmp dl, 0x61
je 0x10021f8d
mov dl, byte [esp + 0x15]
cmp dl, 1
jne 0x10021f1b
mov edx, dword [esi + 0x30]
mov ebp, dword [edx + edi*4]
lea edx, [edx + edi*4]
mov dword [esp + 0x30], edx
mov edx, dword [0x1006be90]
cmp ebp, dword [edx + 0xd8]
jne 0x10021f8d
mov ebp, dword [esp + 0x30]
mov ebp, dword [ebp + 4]
cmp ebp, dword [edx + 0x10]
jne 0x10021f8d
mov dl, byte [esp + 0x15]
cmp dl, 2
jne 0x10021f40
mov edx, dword [esi + 0x38]
movzx edx, word [edx + edi*2]
mov ebp, dword [esi + 4]
lea edx, [edx + edx*2]
movzx edx, word [ebp + edx*4 + 4]
mov ebp, dword [esi + 0x14]
cmp byte [edx + ebp + 4], 0x61
je 0x10021f8d
mov dl, byte [esp + 0x15]
cmp dl, 3
jne 0x10021f6c
mov edx, dword [esi + 0x38]
movzx edx, word [edx + edi*2]
mov ebp, dword [esi + 4]
lea edx, [edx + edx*2]
movzx edx, word [ebp + edx*4 + 4]
mov ebp, dword [esi + 0x14]
add edx, ebp
test byte [edx + 2], 0x80
jne 0x10021f68
cmp byte [edx + 3], 3
jne 0x10021f8d
mov dl, byte [esp + 0x15]
cmp dl, 4
jne 0x10021fce
mov edx, dword [esi + 0x38]
movzx edx, word [edx + edi*2]
mov ebp, dword [esi + 4]
lea edx, [edx + edx*2]
movzx edx, word [ebp + edx*4 + 4]
mov ebp, dword [esi + 0x14]
test byte [edx + ebp + 2], 0x80
jne 0x10021fce
mov edx, dword [esp + 0x20]
add cl, al
mov eax, dword [esi + 0x38]
movzx eax, word [eax + edi*2]
mov byte [esp + edx + 0x230], cl
lea ecx, [eax + eax*2]
mov eax, dword [esi + 4]
movzx ecx, word [eax + ecx*4 + 4]
mov eax, dword [esi + 0x14]
mov cl, byte [ecx + eax + 3]
and cl, 0xcc
mov byte [esp + edx + 0x818], 0
mov byte [esp + edx + 0x134], cl
inc edx
mov dword [esp + 0x20], edx
inc byte [esp + 0x17]
movzx edx, word [esi + 0x26]
cmp ebx, edx
jle 0x10021010
mov eax, dword [esp + 0x20]
mov byte [esp + ebx + 0x38], 0
xor ebx, ebx
test eax, eax
mov dword [esp + 0x18], eax
jle 0x10022418
mov al, byte [esp + ebx + 0x818]
test al, al
je 0x10022238
test ebx, ebx
jle 0x10022364
mov al, byte [esp + ebx + 0x428]
mov ebp, dword [esi + 0x34]
movzx edi, al
mov byte [esp + 0x17], al
mov al, byte [edi + ebp]
cmp al, 4
mov byte [esp + 0x15], al
jne 0x100220b7
mov eax, dword [esi + 0x38]
movzx eax, word [eax + edi*2]
mov edx, dword [esi + 4]
lea ecx, [eax + eax*2]
movzx eax, word [edx + ecx*4 + 4]
mov ecx, dword [esi + 0x14]
movzx eax, byte [eax + ecx + 3]
xor edx, edx
mov dl, byte [esp + ebx + 0x134]
and al, 0xcc
mov byte [esp + 0x34], al
push edx
push eax
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x100220b7
mov al, byte [esp + 0x17]
test al, al
jbe 0x100220b7
cmp byte [edi + ebp - 1], 6
je 0x100220b7
mov ecx, dword [esp + 0x34]
xor eax, eax
mov al, byte [esp + ebx + 0x133]
push eax
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x10022364
mov al, byte [esp + ebx + 0x71b]
test al, al
jne 0x10022364
mov al, byte [esp + 0x17]
mov dl, bl
add dl, 0x60
inc al
mov byte [esp + edi + 0x38], dl
mov byte [esp + ebx + 0x428], al
jmp 0x10022364
mov al, byte [esp + ebx + 0x230]
movzx edi, al
mov byte [esp + 0x14], al
cmp byte [edi + ebp], 4
jne 0x10022364
mov eax, dword [esi + 0x38]
movzx eax, word [eax + edi*2]
mov edx, dword [esi + 4]
lea ecx, [eax + eax*2]
movzx eax, word [edx + ecx*4 + 4]
mov ecx, dword [esi + 0x14]
movzx eax, byte [eax + ecx + 3]
xor ecx, ecx
mov cl, byte [esp + ebx + 0x134]
push eax
mov byte [esp + 0x2c], al
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x10022364
mov al, byte [esp + ebx + 0x71b]
test al, al
jne 0x10022364
mov al, byte [esp + 0x15]
cmp al, 1
je 0x100221fd
cmp al, 3
je 0x100221fd
cmp al, 2
jne 0x10022364
movzx edx, byte [esp + ebx + 0x22f]
lea eax, [edx + ebp]
mov dword [esp + 0x2c], eax
mov al, byte [eax]
cmp al, 3
je 0x1002214c
cmp al, 4
jne 0x1002216b
mov ecx, dword [esp + 0x28]
xor eax, eax
mov al, byte [esp + ebx + 0x133]
push eax
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
jne 0x10022226
cmp ebx, 1
jle 0x100221bf
movzx eax, byte [esp + ebx + 0x22e]
add eax, ebp
mov dword [esp + 0x30], eax
mov al, byte [eax]
cmp al, 3
je 0x10022188
cmp al, 4
jne 0x100221bf
mov edx, dword [esp + 0x28]
xor ecx, ecx
mov cl, byte [esp + ebx + 0x132]
push ecx
push edx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x100221bf
mov eax, dword [esp + 0x30]
cmp byte [eax + 1], 6
je 0x100221bf
mov al, byte [esp + 0x14]
mov cl, bl
add cl, 0x5f
mov byte [esp + edi + 0x38], cl
jmp 0x10022357
movzx edx, byte [esp + ebx + 0x427]
cmp byte [edx + ebp], 2
jne 0x10022364
mov eax, dword [esp + 0x2c]
cmp byte [eax + 1], 6
jne 0x10022364
xor ecx, ecx
mov cl, byte [esp + ebx + 0x133]
xor eax, eax
mov al, byte [esp + ebx + 0x134]
push ecx
push eax
mov eax, dword [esp + 0x30]
and eax, 0xffffffcc
push eax
jmp 0x10022216
mov ecx, dword [esp + 0x28]
xor eax, eax
mov al, byte [esp + ebx + 0x133]
push eax
xor eax, eax
mov al, byte [esp + ebx + 0x138]
push eax
push ecx
call fcn.1001dec0
add esp, 0xc
test eax, eax
je 0x10022364
mov al, byte [esp + 0x14]
mov dl, bl
add dl, 0x60
mov byte [esp + edi + 0x38], dl
jmp 0x10022357
mov al, byte [esp + ebx + 0x32c]
test al, al
jne 0x10022364
test ebx, ebx
jle 0x1002227c
xor eax, eax
mov al, byte [esp + ebx + 0x133]
xor ecx, ecx
mov cl, byte [esp + ebx + 0x134]
push eax
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x1002227c
mov al, byte [esp + ebx + 0x230]
mov dl, bl
add dl, 0x60
jmp 0x10022350
cmp ebx, 1
jle 0x100222ca
xor edx, edx
mov dl, byte [esp + ebx + 0x132]
xor eax, eax
mov al, byte [esp + ebx + 0x134]
push edx
push eax
call fcn.1001de40
add esp, 8
test eax, eax
je 0x100222ca
movzx ecx, byte [esp + ebx + 0x427]
mov edx, dword [esi + 0x34]
cmp byte [ecx + edx], 2
jne 0x100222ca
mov al, byte [esp + ebx + 0x230]
mov cl, bl
movzx edx, al
add cl, 0x5f
mov byte [esp + edx + 0x38], cl
jmp 0x10022357
mov al, byte [esp + ebx + 0x230]
mov cl, byte [esp + ebx + 0x428]
cmp al, cl
mov byte [esp + 0x14], al
jne 0x10022364
mov edx, dword [esi + 0x34]
movzx eax, cl
cmp byte [eax + edx], 4
jne 0x10022364
mov edx, dword [esi + 0x3c]
cmp byte [eax + edx], 0
jne 0x10022364
movzx cx, cl
cmp cx, word [esi + 0x26]
jae 0x10022364
mov edx, dword [esi + 0x38]
movzx ecx, word [edx + eax*2 + 2]
mov edi, dword [esi + 4]
mov ebp, dword [esi + 0x14]
lea eax, [edx + eax*2]
movzx eax, word [eax]
lea ecx, [ecx + ecx*2]
movzx edx, word [edi + ecx*4 + 4]
xor ecx, ecx
mov cl, byte [edx + ebp + 3]
lea edx, [eax + eax*2]
movzx eax, word [edi + edx*4 + 4]
and ecx, 0xffffffcc
push ecx
xor ecx, ecx
mov cl, byte [eax + ebp + 3]
and ecx, 0xffffffcc
push ecx
call fcn.1001de40
add esp, 8
test eax, eax
je 0x10022364
mov al, byte [esp + 0x14]
mov dl, bl
add dl, 0x62
movzx ecx, al
mov byte [esp + ecx + 0x38], dl
test al, al
je 0x10022364
dec al
mov byte [esp + ebx + 0x230], al
movzx bp, byte [esp + ebx + 0x428]
movzx edx, byte [esp + ebx + 0x230]
movzx eax, bp
inc edx
cmp eax, edx
jge 0x1002240b
movzx ecx, byte [esp + ebx + 0x230]
lea edx, [ecx + 1]
lea esp, [esp]
mov ecx, dword [esi + 0x34]
mov cl, byte [eax + ecx]
cmp cl, 1
je 0x100223c6
cmp cl, 4
je 0x100223c6
cmp cl, 3
je 0x100223c6
cmp cl, 8
jne 0x10022403
mov ecx, dword [esi + 0x38]
movzx ecx, word [ecx + eax*2]
mov edi, dword [esi + 4]
lea ecx, [ecx + ecx*2]
movzx ecx, word [edi + ecx*4 + 4]
mov edi, dword [esi + 0x14]
test byte [ecx + edi + 3], 0xc0
jne 0x10022403
mov ecx, dword [esi + 0x38]
movzx eax, word [ecx + eax*2]
mov ecx, dword [esi + 4]
lea eax, [eax + eax*2]
movzx eax, word [ecx + eax*4 + 4]
mov ecx, dword [esi + 0x14]
lea edi, [eax + ecx + 3]
mov al, byte [edi]
test al, 0xc0
jne 0x100223f1
mov cl, byte [esp + ebx + 0x134]
and cl, 0xc0
or al, cl
test al, 0xc
jne 0x10022401
mov cl, byte [esp + ebx + 0x134]
and cl, 0xc
or al, cl
mov byte [edi], al
inc ebp
movzx eax, bp
cmp eax, edx
jl 0x10022390
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jl 0x10021ff1
pop edi
pop ebp
pop ebx
mov ecx, dword [esp + 0x908]
pop esi
call fcn.10057644
add esp, 0x908
ret