Function at 0x402ac8
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov edx, dword [ebp + 0x1c]
xor ecx, ecx
push ebx
mov ebx, dword [ebp + 0x20]
mov dword [ebp - 4], ecx
mov ecx, edx
shr ecx, 6
and ecx, 3
mov eax, dword [ebx + 0x24]
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0x28]
mov dword [ebp + 0x20], eax
mov eax, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
mov ecx, edx
movzx eax, byte [eax]
and edx, 7
push edi
mov edi, dword [ebp + 0x18]
shr ecx, 3
mov eax, dword [eax*4 + 0x410018]
and ecx, 7
cmp dword [ebp + 0x14], 0x2b
push 2
mov dword [ebp + 0x1c], edx
mov dword [ebp - 0xc], eax
pop edx
jg 0x402c17
je 0x402c03
mov esi, dword [ebp + 0x14]
mov dword [ebp - 8], esi
sub dword [ebp - 8], 0x14
mov esi, dword [ebp + 0xc]
je 0x402bf7
dec dword [ebp - 8]
je 0x4038d5
dec dword [ebp - 8]
je 0x402beb
dec dword [ebp - 8]
je 0x402bdf
sub dword [ebp - 8], 0xe
je 0x402b88
sub dword [ebp - 8], edx
je 0x402b72
sub dword [ebp - 8], 3
je 0x4038dc
jmp 0x402c53
mov ecx, dword [ebp + 8]
xor eax, eax
cmp dword [ecx + 0x18], edx
sete al
add eax, 3
mov dword [ebp - 4], eax
jmp 0x4038dc
mov ecx, dword [ebp + 0x24]
xor edx, edx
sub ecx, edx
je 0x402bcc
dec ecx
je 0x402bb9
dec ecx
jne 0x4038de
mov ecx, 0x3000000
and eax, ecx
cmp eax, ecx
jne 0x402bad
or dword [ebx + 4], 0x2000000
mov dword [ebp - 4], 4
jmp 0x4038de
or dword [ebx + 4], 0x2000
mov dword [ebp - 4], 3
jmp 0x4038de
or dword [ebx + 4], 0x2000
mov dword [ebp - 4], 2
jmp 0x4038de
mov dword [ebp - 4], 5
jmp 0x4038dc
mov dword [ebp - 4], 4
jmp 0x4038dc
mov dword [ebp - 4], 2
jmp 0x4038dc
mov ecx, dword [ebp - 0x14]
cmp ecx, 3
jne 0x4038f3
xor eax, eax
inc eax
jmp 0x40394b
mov esi, dword [ebp + 0x14]
sub esi, 0x2c
mov dword [ebp - 8], esi
mov esi, dword [ebp + 0xc]
je 0x4038d5
dec dword [ebp - 8]
je 0x4038b3
dec dword [ebp - 8]
je 0x402beb
dec dword [ebp - 8]
je 0x4038aa
dec dword [ebp - 8]
je 0x403880
sub dword [ebp - 8], 0x2c
je 0x40386c
cmp dword [ebp + 0x14], 0x42
mov dword [ebp - 8], 6
jg 0x402d2d
je 0x402cbc
cmp dword [ebp + 0x14], 0x18
jg 0x402d10
je 0x402d83
mov edi, dword [ebp + 0x14]
sub edi, 0xf
mov dword [ebp - 8], edi
mov edi, dword [ebp + 0x18]
je 0x402d83
dec dword [ebp - 8]
je 0x402d01
dec dword [ebp - 8]
je 0x402cdd
dec dword [ebp - 8]
je 0x402cc1
dec dword [ebp - 8]
jne 0x402d5a
mov eax, 0x2000
test dword [ebx], eax
je 0x402cbc
or dword [ebx + 4], eax
mov ax, word [edx*2 + 0x415d80]
mov ecx, dword [ebp - 0x14]
jmp 0x4038fe
push 3
pop edx
jmp 0x402cac
cmp dword [ebp + 0x24], edx
jne 0x402cbc
mov ecx, 0x3000000
and eax, ecx
push 4
pop edx
cmp eax, ecx
jne 0x402cac
or dword [ebx + 4], 0x2000000
jmp 0x402cac
or dword [ebx + 4], 0x2000
cmp dword [ebp + 0x24], 1
je 0x402cbc
cmp dword [ebp + 0x24], edx
jne 0x402d07
test eax, 0x1000000
jne 0x402cfd
or dword [ebx + 4], 0x2000000
push 4
jmp 0x402cbe
cmp dword [ebp + 0x14], 0x10
je 0x402cac
or dword [ebx + 4], 0x2000
jmp 0x402cac
mov eax, dword [ebp + 0x14]
mov dword [ebp + 0x18], eax
sub dword [ebp + 0x18], 0x19
je 0x402cac
dec dword [ebp + 0x18]
je 0x402d83
dec dword [ebp + 0x18]
je 0x402cac
dec dword [ebp + 0x18]
jne 0x402d5d
jmp 0x402d07
mov eax, dword [ebp + 0x14]
cmp eax, 0x4c
jg 0x402d8b
je 0x402d83
sub eax, 0x43
je 0x402cfd
sub eax, 3
je 0x402cac
dec eax
je 0x402cbc
dec eax
je 0x402cfd
dec eax
je 0x402d7c
sub eax, edx
je 0x402cbc
mov eax, dword [ebp + 0x14]
dec eax
cmp eax, 0x57
ja case.0x402d75.52
movzx eax, byte [eax + 0x403a24]
mov dword [ebp - 8], 6
jmp dword [eax*4 + 0x403954]
push 6
jmp 0x402cbe
xor edx, edx
inc edx
jmp 0x402cac
cmp eax, 0x4d
je 0x402cac
cmp eax, 0x4e
jle 0x402d5d
cmp eax, 0x50
jle 0x402df8
cmp eax, 0x56
je 0x402df1
cmp eax, 0x59
je 0x402dda
cmp eax, 0x5a
je 0x402dc6
cmp eax, 0x5b
jne 0x402d5d
mov eax, dword [ebp + 0x20]
movzx edx, al
and edx, 0x10
or edx, 0x20
shr edx, 3
jmp 0x402cac
mov eax, dword [ebp + 0x20]
movzx edx, al
and edx, 0x10
or edx, 0x60
shr edx, 4
jmp 0x402cac
mov eax, dword [ebp + 0x20]
and al, 0x10
movzx edx, al
neg edx
sbb edx, edx
and edx, 3
add edx, 4
jmp 0x402cac
push 7
jmp 0x402cbe
mov eax, dword [ebp + 0x20]
test al, 8
push 0
pop edx
setne dl
add edx, 3
jmp 0x402cac
mov byte [esi + edi*4 + 0x20], dl
push 8
pop eax
push 1
mov edx, esi
mov word [esi + edi*4 + 0x22], ax
mov ecx, dword [ebp + 8]
call fcn.00402a6e
test eax, eax
jne 0x403842
jmp case.0x402d75.52
cmp dword [ebp + 0x24], 0
jne 0x402e47
or dword [ebx + 4], 0x2000
mov byte [esi + edi*4 + 0x20], dl
push 0x10
pop eax
push edx
jmp 0x402e14
cmp dword [ebp + 0x24], edx
jne 0x402e6c
mov eax, dword [ebp - 0xc]
mov ecx, 0x3000000
and eax, ecx
cmp eax, ecx
jne 0x402e6c
or dword [ebx + 4], 0x2000000
push 0x40
pop eax
mov byte [esi + edi*4 + 0x20], dl
push 8
jmp 0x402e14
or dword [ebx + 4], 0x2000
mov ecx, dword [ebp + 8]
mov byte [esi + edi*4 + 0x20], dl
cmp dword [ecx + 0x18], edx
mov edx, esi
jne 0x402e97
push 0x40
pop eax
mov word [esi + edi*4 + 0x22], ax
or word [esi + 0x18], 0x20
push 4
call fcn.00402a10
jmp 0x402e23
push 0x20
pop eax
mov word [esi + edi*4 + 0x22], ax
push 4
jmp 0x402e1e
mov byte [esi + edi*4 + 0x20], dl
mov edx, 0x2000
push 0x20
pop ecx
test dword [ebp - 0xc], edx
je 0x402ed9
test dword [ebx], edx
je 0x402ed9
mov eax, dword [ebp + 8]
or dword [ebx + 4], edx
mov eax, dword [eax + 0x18]
test eax, eax
je 0x402ed2
dec eax
cmp eax, 1
ja 0x402ee1
push 0x10
jmp 0x402edb
mov word [esi + edi*4 + 0x22], cx
jmp 0x402ee1
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
or word [esi + 0x18], cx
mov edx, esi
mov ecx, dword [ebp + 8]
push 1
jmp 0x402e90
mov byte [esi + edi*4 + 0x20], 3
jmp 0x402e41
mov byte [esi + edi*4 + 0x20], 3
jmp 0x402e0f
push 8
pop eax
mov byte [esi + edi*4 + 0x20], 4
lea edx, [esi + 4]
push 1
jmp 0x402e16
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
xor eax, eax
mov byte [esi + edi*4 + 0x20], 1
cmp dword [ebx + 0x18], eax
je 0x402f4e
mov edx, dword [ebp + 0x20]
or dword [ebx + 4], 0x2000000
and edx, 4
lea eax, [edx - 2]
lea eax, [ecx + eax*2]
cmp eax, 3
lea eax, [edx + 0x1e]
jbe 0x402f46
lea eax, [edx + 0x18]
lea eax, [ecx + eax*2]
jmp 0x40360c
add cl, 0x30
jmp 0x40383e
add cl, 0x20
mov byte [esi + edi*4 + 0x20], 1
mov byte [esi + edi*4 + 0x21], cl
push 0x10
pop eax
mov word [esi + edi*4 + 0x22], ax
jmp 0x403856
mov eax, dword [ebp + 0x24]
xor edx, edx
sub eax, edx
je 0x402fc9
dec eax
je 0x402f9f
dec eax
jne 0x403842
mov eax, dword [ebp + 0x20]
or dword [ebx + 4], 0x2000000
and al, 4
add al, al
add al, cl
mov byte [esi + edi*4 + 0x20], 1
mov byte [esi + edi*4 + 0x21], al
push 0x40
jmp 0x402f64
mov eax, dword [ebp + 0x20]
test al, 4
je 0x402fb2
or dword [ebx + 4], 0x2000000
add ecx, 8
jmp 0x402fb9
or dword [ebx + 4], 0x2000
mov byte [esi + edi*4 + 0x20], 1
add cl, 0x10
mov byte [esi + edi*4 + 0x21], cl
push 0x20
jmp 0x402f64
or dword [ebx + 4], 0x2000
mov eax, dword [ebp + 0x20]
test al, 4
je 0x402fe1
or dword [ebx + 4], 0x2000000
add ecx, 8
add cl, 0x20
push 0x10
jmp 0x403833
mov eax, dword [ebp + 0x20]
test al, 4
je 0x402fb9
jmp 0x402fa6
mov eax, dword [ebp + 0x20]
test al, 4
je 0x403005
or dword [ebx + 4], 0x2000000
add ecx, 8
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], edx
jne 0x40302a
mov eax, dword [ebp - 0xc]
and eax, 0x3000000
cmp eax, 0x1000000
jne 0x40302a
mov byte [esi + edi*4 + 0x20], 1
mov byte [esi + edi*4 + 0x21], cl
jmp 0x402f9b
test byte [ebp + 0x20], 8
je 0x402fb9
or dword [ebx + 4], 0x2000000
jmp 0x40301c
test byte [ebp + 0x20], 1
mov ecx, dword [ebp + 0x1c]
je 0x40304c
or dword [ebx + 4], 0x2000000
add ecx, 8
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], edx
mov byte [esi + edi*4 + 0x20], 1
jne 0x402fbe
jmp 0x403021
add cl, 0x53
jmp 0x40301c
mov eax, dword [ebp + 0x1c]
add al, 0x53
jmp 0x402f92
xor eax, eax
mov ecx, eax
jmp 0x403077
mov eax, dword [ebp + 0x20]
test al, 4
je 0x403085
or dword [ebx + 4], 0x2000000
add ecx, 8
mov byte [esi + edi*4 + 0x20], 1
add cl, 0x5b
mov byte [esi + edi*4 + 0x21], cl
mov eax, 0x80
jmp 0x402f65
test byte [ebp + 0x20], 1
mov eax, dword [ebp + 0x1c]
je 0x4030ae
or dword [ebx + 4], 0x2000000
add eax, 8
mov byte [esi + edi*4 + 0x20], 1
add al, 0x5b
mov byte [esi + edi*4 + 0x21], al
jmp 0x403091
test byte [ebp + 0x20], 4
mov eax, dword [ebp + 8]
je 0x4030d0
or dword [ebx + 4], 0x2000000
add ecx, 8
jmp 0x4030e6
cmp dword [eax + 0x18], 1
jne 0x4030e6
push 0x10
pop eax
test byte [ebx], al
je 0x4030e3
add ecx, 8
or dword [ebx + 4], eax
mov eax, dword [ebp + 8]
cmp ecx, 9
jae case.0x402d75.52
cmp ecx, 1
je case.0x402d75.52
cmp ecx, 5
jb 0x403106
cmp ecx, 7
jbe case.0x402d75.52
mov byte [esi + edi*4 + 0x20], 1
cmp dword [eax + 0x18], edx
jne 0x403114
push 0x40
jmp 0x403116
push 0x20
add cl, 0x7b
pop eax
mov word [esi + edi*4 + 0x22], ax
mov byte [esi + edi*4 + 0x21], cl
jmp 0x403856
cmp ecx, 4
je case.0x402d75.52
cmp ecx, 5
je case.0x402d75.52
test byte [ebp + 0x20], 4
jne case.0x402d75.52
mov eax, dword [ebp + 8]
mov byte [esi + edi*4 + 0x20], 1
cmp dword [eax + 0x18], edx
jne 0x403155
push 0x40
jmp 0x403157
push 0x20
sub cl, 0x7c
jmp 0x403119
cmp dword [ebp + 0x2c], 0
je 0x40316b
cmp ecx, 1
je case.0x402d75.52
cmp ecx, 5
ja case.0x402d75.52
add cl, 0x44
jmp 0x402f59
push 0x10
pop eax
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ebp - 0xc]
mov byte [esi + edi*4 + 0x20], 1
and eax, 0x1f80
or dword [ebx + 4], 0x2000
cmp eax, 0x80
je 0x4031f8
cmp eax, 0x100
je 0x4031ee
cmp eax, 0x200
je 0x4031e4
cmp eax, 0x400
je 0x4031da
cmp eax, 0x800
je 0x4031d0
cmp eax, 0x1000
jne 0x403842
mov byte [esi + edi*4 + 0x21], 0x49
jmp 0x403842
mov byte [esi + edi*4 + 0x21], 0x48
jmp 0x403842
mov byte [esi + edi*4 + 0x21], 0x44
jmp 0x403842
mov byte [esi + edi*4 + 0x21], 0x47
jmp 0x403842
mov byte [esi + edi*4 + 0x21], 0x46
jmp 0x403842
mov byte [esi + edi*4 + 0x21], 0x45
jmp 0x403842
mov word [esi + edi*4 + 0x20], 0x3001
push 8
jmp 0x402f64
cmp dword [ebp + 0x24], 0
jne 0x403229
or dword [ebx + 4], 0x2000
mov word [esi + edi*4 + 0x20], 0x2001
jmp 0x402f62
cmp dword [ebp + 0x24], 1
jne 0x403242
or dword [ebx + 4], 0x2000
mov word [esi + edi*4 + 0x20], 0x1001
jmp 0x402fc5
mov eax, dword [ebp - 0xc]
not eax
test eax, 0x1000000
je 0x403255
or dword [ebx + 4], 0x2000000
mov word [esi + edi*4 + 0x20], 1
jmp 0x402f9b
or dword [ebx + 4], 0x2000
cmp dword [ebp + 0x24], 0
mov ecx, dword [ebp + 8]
jne 0x4032a4
add dword [ecx + 0x14], 0xfffffffc
js case.0x402d75.52
mov byte [esi + edi*4 + 0x20], 9
push 0x10
pop eax
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ecx + 0x10]
movzx eax, word [eax]
mov dword [esi + 4], eax
mov eax, dword [ecx + 0x10]
mov ax, word [eax + 2]
mov word [esi], ax
add dword [ecx + 0x10], 4
jmp 0x403842
add dword [ecx + 0x14], 0xfffffffa
js case.0x402d75.52
mov byte [esi + edi*4 + 0x20], 9
push 0x20
pop eax
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax]
mov dword [esi + 4], eax
mov eax, dword [ecx + 0x10]
mov ax, word [eax + 4]
mov word [esi], ax
add dword [ecx + 0x10], 6
jmp 0x403842
cmp dword [ebp + 0x14], 0x28
mov ecx, dword [ebp + 8]
push 0x10
pop eax
jne 0x403339
push 8
pop eax
mov byte [esi + edi*4 + 0x20], al
push 1
mov edx, esi
mov word [esi + edi*4 + 0x22], ax
call fcn.00402a10
test eax, eax
je case.0x402d75.52
mov eax, dword [ebp + 0x10]
mov ecx, 0x86
movzx eax, word [eax + 4]
cmp ax, cx
jb 0x403842
add ecx, 0x44
cmp ax, cx
ja 0x403842
mov eax, dword [ebx]
test al, al
jns 0x403355
or dword [ebx + 4], 0x80
push 0x10
pop ecx
or word [esi + 0x18], cx
jmp 0x403842
or dword [ebx + 4], 0x2000
cmp dword [ebp + 0x24], 0
mov byte [esi + edi*4 + 0x20], 8
jne 0x40334e
push edx
jmp 0x4032eb
push 0x20
pop eax
push 4
jmp 0x4032eb
mov ecx, 0x200
test ecx, eax
je 0x403842
or dword [ebx + 4], ecx
push 8
pop eax
or word [esi + 0x18], ax
jmp 0x403842
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
push 0x10
pop eax
xor edx, edx
mov byte [esi + edi*4 + 0x20], 5
push 0x20
pop ecx
cmp word [esi + edi*4 + 0x22], dx
jne 0x4033a3
mov edx, dword [ebp + 0x24]
sub edx, 0
je 0x40339e
dec edx
je 0x4033d2
dec edx
jne 0x4033a3
push 0x40
pop eax
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ebp + 8]
push esi
push dword [eax + 0x18]
push ebx
push 0x200
call fcn.00404316
cmp dword [ebp + 0x28], 0
lea edx, [esi + 8]
jne 0x4033d9
or dword [ebx + 4], 0x4000
push 0x10
pop ecx
mov byte [esi + 0x34], cl
push 2
jmp 0x402e1b
mov word [esi + edi*4 + 0x22], cx
jmp 0x4033a3
cmp dword [ebp + 0x28], 1
mov ecx, dword [ebp + 8]
jne 0x4033f2
or dword [ebx + 4], 0x4000
mov byte [esi + 0x34], 0x20
jmp 0x402e9f
push 0x40
pop eax
mov byte [esi + 0x34], al
push 8
jmp 0x402e1e
push 8
pop eax
mov byte [esi + edi*4 + 0x20], dl
mov word [esi + edi*4 + 0x22], ax
mov byte [esi], 1
jmp 0x403842
mov word [esi + edi*4 + 0x20], 0x3101
jmp 0x403209
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
movzx eax, byte [eax - 1]
and eax, 7
mov byte [esi + edi*4 + 0x20], 1
add eax, 0x4b
mov byte [esi + edi*4 + 0x21], al
jmp 0x402fc5
mov eax, dword [ebp + 8]
mov word [esi + edi*4 + 0x20], 0x4b01
push 0x20
pop ecx
mov word [esi + edi*4 + 0x22], cx
mov eax, dword [eax + 0x10]
movzx eax, byte [eax - 1]
and eax, 7
mov byte [esi + edi*4 + 0x24], 1
add eax, 0x4b
mov word [esi + edi*4 + 0x26], cx
mov byte [esi + edi*4 + 0x25], al
jmp 0x403842
mov eax, dword [ebp + 8]
push 0x20
mov eax, dword [eax + 0x10]
movzx eax, byte [eax - 1]
and eax, 7
mov byte [esi + edi*4 + 0x20], 1
add eax, 0x4b
mov byte [esi + edi*4 + 0x21], al
pop eax
mov word [esi + edi*4 + 0x22], ax
mov word [esi + edi*4 + 0x24], 0x4b01
mov word [esi + edi*4 + 0x26], ax
jmp 0x403842
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ebp + 8]
mov byte [esi + edi*4 + 0x20], 1
mov eax, dword [eax + 0x10]
movzx ecx, byte [eax - 1]
and ecx, 7
test byte [ebp + 0x20], 1
je 0x4034e0
or dword [ebx + 4], 0x2000000
lea eax, [ecx + 4]
cmp eax, 3
ja 0x4034d8
add ecx, 0x44
jmp 0x40383e
add ecx, 0x38
jmp 0x40383e
cmp dword [ebx + 0x18], 1
jne 0x402f4e
or dword [ebx + 4], 0x2000000
lea eax, [ecx - 4]
cmp eax, 3
ja 0x403501
add ecx, 0x3c
jmp 0x40383e
add ecx, 0x30
jmp 0x40383e
mov eax, dword [ebp + 8]
xor edx, edx
mov eax, dword [eax + 0x10]
movzx ecx, byte [eax - 1]
mov eax, dword [ebp + 0x24]
and ecx, 7
sub eax, edx
je 0x40356b
dec eax
je 0x403562
dec eax
jne 0x403842
mov eax, dword [ebp - 0xc]
mov edx, 0x2000000
test eax, 0x1000000
je 0x403551
test edx, eax
jne 0x403551
test byte [ebp + 0x20], 1
je 0x40301c
or dword [ebx + 4], edx
add ecx, 8
jmp 0x40301c
mov eax, dword [ebp + 0x20]
or dword [ebx + 4], edx
and eax, 1
lea ecx, [ecx + eax*8]
jmp 0x40301c
test byte [ebp + 0x20], 1
jmp 0x402fa4
or dword [ebx + 4], 0x2000
test byte [ebp + 0x20], 1
jmp 0x402fd5
or dword [ebx + 4], 0x4000
mov eax, dword [ebp - 0xc]
mov byte [esi + edi*4 + 0x20], 6
push 0x10
pop ecx
test al, 4
je 0x4035cd
or dword [ebx + 4], 0x2000
cmp dword [ebp + 0x24], 0
mov esi, dword [ebx + 4]
mov dword [ebp + 0x2c], esi
mov esi, dword [ebp + 0xc]
jne 0x4035ae
mov word [esi + edi*4 + 0x22], cx
jmp 0x4035d5
cmp dword [ebp + 0x24], edx
jne 0x4035c9
test eax, 0x1000000
je 0x4035c9
mov eax, dword [ebp + 0x2c]
or eax, 0x2000000
mov dword [ebx + 4], eax
push 0x40
jmp 0x4035cf
push 0x20
jmp 0x4035cf
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
xor eax, eax
mov byte [esi + 0x31], al
mov eax, dword [ebp + 8]
push esi
push dword [eax + 0x18]
push ebx
push 0x200
call fcn.00404316
cmp dword [ebp + 0x28], 0
jne 0x4035fc
mov byte [esi + edi*4 + 0x21], 0x26
jmp 0x403842
cmp dword [ebp + 0x28], 1
push 0x10
setne al
dec al
pop ecx
and al, cl
add al, 6
mov byte [esi + edi*4 + 0x21], al
jmp 0x403842
or dword [ebx + 4], 0x4000
mov eax, dword [ebp - 0xc]
mov byte [esi + edi*4 + 0x20], 6
push 0x10
pop ecx
test al, 4
je 0x403667
or dword [ebx + 4], 0x2000
cmp dword [ebp + 0x24], 0
mov esi, dword [ebx + 4]
mov dword [ebp + 0x2c], esi
mov esi, dword [ebp + 0xc]
jne 0x403648
mov word [esi + edi*4 + 0x22], cx
jmp 0x40366f
cmp dword [ebp + 0x24], edx
jne 0x403663
test eax, 0x1000000
je 0x403663
mov eax, dword [ebp + 0x2c]
or eax, 0x2000000
mov dword [ebx + 4], eax
push 0x40
jmp 0x403669
push 0x20
jmp 0x403669
push 8
pop eax
mov word [esi + edi*4 + 0x22], ax
test edi, edi
jne 0x40367f
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], edx
je 0x40367f
mov byte [esi + 0x31], 0xc4
cmp dword [ebp + 0x28], 0
jne 0x40368f
mov byte [esi + edi*4 + 0x21], 0x27
jmp 0x403842
cmp dword [ebp + 0x28], 1
setne al
dec al
and al, cl
add al, 7
jmp 0x40360c
mov word [esi + edi*4 + 0x20], 0x2201
jmp 0x402f62
mov word [esi + edi*4 + 0x20], 0x1101
jmp 0x402fc5
mov eax, dword [ebp + 8]
or dword [ebx + 4], 0x4000
push esi
push dword [eax + 0x18]
push ebx
push 0x200
call fcn.00404316
cmp dword [ebp + 0x28], 0
push 8
pop eax
mov word [esi + edi*4 + 0x20], 0x3007
mov word [esi + edi*4 + 0x22], ax
jne 0x4036f0
mov byte [esi + 0x32], 0x23
jmp 0x403842
cmp dword [ebp + 0x28], 1
jne 0x4036ff
mov byte [esi + 0x32], 0x13
jmp 0x403842
or dword [ebx + 4], 0x2000000
mov byte [esi + 0x32], 3
jmp 0x403842
cmp dword [ebp + 0x28], edx
jne 0x403720
mov word [esi + edi*4 + 0x20], 6
jmp 0x402f9b
or dword [ebx + 4], 0x4000
cmp dword [ebp + 0x28], 1
jne 0x403739
mov word [esi + edi*4 + 0x20], 0x1006
jmp 0x402fc5
mov word [esi + edi*4 + 0x20], 0x2006
jmp 0x402f62
mov eax, dword [ebp - 0x10]
jmp 0x4030ae
mov ecx, dword [ebp + 8]
dec dword [ecx + 0x14]
js case.0x402d75.52
mov eax, dword [ecx + 0x10]
movzx eax, byte [eax]
shr eax, 4
cmp dword [ecx + 0x18], 1
jne 0x40376b
and eax, 7
mov byte [esi + edi*4 + 0x20], 1
add al, 0x5b
mov byte [esi + edi*4 + 0x21], al
mov eax, 0x80
mov word [esi + edi*4 + 0x22], ax
inc dword [ecx + 0x10]
jmp 0x403842
mov eax, dword [ebp + 0x20]
test al, 4
je 0x403792
add ecx, 8
mov byte [esi + edi*4 + 0x20], 1
test al, 0x10
je 0x40308a
add cl, 0x6b
mov byte [esi + edi*4 + 0x21], cl
mov eax, 0x100
jmp 0x402f65
mov ecx, dword [ebp + 8]
dec dword [ecx + 0x14]
js case.0x402d75.52
mov eax, dword [ecx + 0x10]
movzx eax, byte [eax]
shr eax, 4
cmp dword [ecx + 0x18], 1
jne 0x4037ce
and eax, 7
test byte [ebx + 0x28], 0x10
mov byte [esi + edi*4 + 0x20], 1
je 0x403770
add al, 0x6b
mov byte [esi + edi*4 + 0x21], al
mov eax, 0x100
jmp 0x40377b
test byte [ebp + 0x20], 4
je 0x4037ef
add ecx, 8
mov byte [esi + edi*4 + 0x20], 1
jmp 0x40379f
mov eax, dword [ebp - 0x10]
mov byte [esi + edi*4 + 0x20], 1
add al, 0x6b
mov byte [esi + edi*4 + 0x21], al
jmp 0x4037a6
test byte [ebp + 0x20], 0x10
mov eax, dword [ebp - 0x10]
mov byte [esi + edi*4 + 0x20], 1
je 0x4030b3
jmp 0x4037fe
mov eax, dword [ebp + 0x20]
push 8
pop edx
test al, 4
je 0x403826
add ecx, edx
test dl, al
jne 0x40301c
add cl, 0x10
push 0x20
pop eax
mov byte [esi + edi*4 + 0x20], 1
mov word [esi + edi*4 + 0x22], ax
mov byte [esi + edi*4 + 0x21], cl
mov al, byte [esi + edi*4 + 0x20]
cmp al, 1
je 0x403856
cmp al, 6
je 0x403856
cmp al, 7
jne 0x402c0f
movzx ecx, byte [esi + edi*4 + 0x21]
mov cx, word [ecx*2 + 0x415c68]
or word [esi + 0x1c], cx
jmp 0x402c0f
mov eax, dword [ebp + 0x20]
movzx eax, al
and eax, 0x10
or eax, 0x60
shr eax, 4
jmp 0x402b80
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x403892
test byte [ebx], 0x10
je 0x403892
mov dword [eax], 1
cmp dword [ebp + 0x24], 2
jne 0x4038c3
or dword [ebx + 4], 0x2000000
mov dword [ebp - 4], 6
xor edx, edx
jmp 0x4038e1
mov dword [ebp - 4], 6
jmp 0x4038dc
cmp dword [ebp + 0x24], 2
mov eax, dword [ebp + 0x2c]
jne 0x4038cc
or dword [ebx + 4], 0x2000000
mov dword [ebp - 4], 4
jmp 0x4038a6
mov dword [ebp - 4], 3
jmp 0x4038a6
mov dword [ebp - 4], 3
xor edx, edx
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp - 0x14]
cmp ecx, 3
jne 0x4038f3
test eax, eax
je case.0x402d75.52
mov dword [eax], edx
xor eax, eax
jmp 0x40394b
mov eax, dword [ebp - 4]
mov ax, word [eax*2 + 0x415d80]
mov word [esi + edi*4 + 0x22], ax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp + 0x1c]
push eax
push ecx
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push ebx
push edi
push dword [ebp + 0x14]
push esi
push dword [ebp + 8]
call fcn.00403a7c
mov cl, byte [esi + edi*4 + 0x20]
mov edx, eax
cmp cl, 1
je 0x403938
cmp cl, 6
je 0x403938
cmp cl, 7
jne 0x403949
movzx eax, byte [esi + edi*4 + 0x21]
mov ax, word [eax*2 + 0x415c68]
or word [esi + 0x1c], ax
mov eax, edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28