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

Disassembly:
sub esp, 0x58
mov ecx, dword [esp + 0x68]
xor eax, eax
cmp ecx, eax
push ebx
mov ebx, dword [esp + 0x68]
push esi
mov esi, dword [esp + 0x74]
push edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x3c], eax
je 0x40107e0
cmp ebx, eax
je 0x40107f6
cmp dword [esp + 0x7c], eax
je 0x40107ea
cmp esi, eax
je 0x40107f6
mov edi, dword [esp + 0x6c]
test edi, 0x77fceff8
je 0x4010801
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x58
ret 0x18
cmp ecx, eax
jge 0x4010812
mov ecx, ebx
call fcn.04013470
mov dword [esp + 0x74], eax
xor eax, eax
cmp dword [esp + 0x7c], eax
jge 0x4010825
mov ecx, esi
call fcn.04013470
mov dword [esp + 0x7c], eax
xor eax, eax
cmp edi, eax
jne 0x4010855
cmp ebx, eax
je 0x4010840
mov ecx, ebx
call fcn.04013470
cmp eax, dword [esp + 0x74]
jge 0x401083e
mov dword [esp + 0x74], eax
xor eax, eax
cmp esi, eax
je 0x4010855
mov ecx, esi
call fcn.04013470
cmp eax, dword [esp + 0x7c]
jge 0x4010855
mov dword [esp + 0x7c], eax
mov eax, edi
shr eax, 0x10
and eax, 3
mov ecx, edi
and ecx, 3
lea edx, [ecx + eax*4]
mov eax, dword [edx*4 + 0x4098678]
mov ecx, dword [esp + 0x68]
push ebp
mov edx, edi
mov dword [esp + 0x38], eax
call fcn.040104a0
mov ebp, eax
xor eax, eax
test ebp, ebp
mov dword [esp + 0x30], ebp
je case.0x40117d9.2
cmp dword [esp + 0x78], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x14], 7
je 0x40108b0
cmp dword [esp + 0x80], eax
je 0x40108b0
movzx edx, word [esi]
jmp 0x401090c
mov ebx, dword [esp + 0x70]
test ebx, 0x8000000
je 0x4011782
cmp dword [esp + 0x78], 0
jne 0x40109cb
cmp dword [esp + 0x80], 0
je 0x40117a6
lea ebx, [esp + 0x58]
mov dword [esp + 0x1c], ebx
mov word [esp + 0x58], 0x20
mov dword [esp + 0x78], 1
cmp dword [esp + 0x78], 0
je 0x40108b0
cmp dword [esp + 0x80], 0
je 0x40108b0
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
movzx edx, word [edx]
movzx ecx, word [ebx]
mov eax, dword [ebp + 8]
mov edi, dword [eax + ecx*4]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + edx*4]
and edi, ecx
and eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], eax
nop
cmp dword [esp + 0x3c], 0
je 0x4010bfa
cmp dword [esp + 0x4c], 0
jne 0x4010ab0
test byte [esp + 0x27], 0xc0
je 0x4010ab0
xor esi, esi
cmp dword [ebp + 0x14], esi
mov ecx, 1
je 0x401098a
cmp dword [esp + 0x78], ecx
jle 0x40109ee
movzx edx, word [ebx + 2]
mov eax, dword [ebp + 8]
mov edx, dword [eax + edx*4]
xor edx, edi
test edx, 0xe7ffffff
jne 0x40109ee
add ebx, 2
sub dword [esp + 0x78], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x78]
sub eax, ecx
mov dword [esp + 0x6c], esi
je 0x40109a6
sub eax, ecx
je 0x40109a2
movzx eax, word [ebx + 4]
mov dword [esp + 0x6c], eax
movzx esi, word [ebx + 2]
mov edx, dword [ebp + 0x18]
movzx eax, word [edx + 4]
test eax, eax
movzx ecx, word [ebx]
je 0x4010a9d
cmp word [edx + 6], cx
jbe 0x40109f4
add edx, 0x10
sub eax, 1
jne 0x40109b8
jmp 0x4010a9d
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0x5c]
mov dword [esp + 0x18], eax
mov word [esp + 0x5c], 0x20
mov dword [esp + 0x80], 1
jmp 0x40108f0
mov dword [esp + 0x34], esi
jmp 0x401098a
test eax, eax
je 0x4010a9d
cmp word [edx + 6], cx
jne 0x4010a9d
cmp si, word [edx + 0xc]
jb 0x4010a9d
cmp si, word [edx + 0xe]
ja 0x4010a9d
movzx ecx, word [edx + 8]
mov eax, dword [ebp + 0x1c]
lea ecx, [eax + ecx*8]
movzx eax, word [edx + 0xa]
test eax, eax
je 0x4010a9d
lea esp, [esp]
cmp word [ecx], si
jbe 0x4010a3f
add ecx, 8
sub eax, 1
jne 0x4010a30
jmp 0x4010a9d
test eax, eax
je 0x4010a9d
cmp word [ecx], si
jne 0x4010a9d
movzx edx, word [ecx + 2]
test dx, dx
je 0x4010a66
cmp dx, word [esp + 0x6c]
je 0x4010a7b
mov ebp, dword [esp + 0x30]
add ecx, 8
sub eax, 1
jne 0x4010a43
jmp 0x4010a9d
cmp dword [esp + 0x34], 0
jne 0x4010a92
add ebx, 2
sub dword [esp + 0x78], 1
mov dword [esp + 0x1c], ebx
jmp 0x4010a92
cmp dword [esp + 0x34], 0
jne 0x4010a8e
add ebx, 4
sub dword [esp + 0x78], 2
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x30]
mov edi, dword [ecx + 4]
and edi, dword [esp + 0x38]
mov dword [esp + 0x24], edi
cmp dword [esp + 0x34], 0
je 0x4010ab0
sub ebx, 2
add dword [esp + 0x78], 1
mov dword [esp + 0x1c], ebx
xor esi, esi
cmp dword [esp + 0x50], esi
jne 0x4010bfa
test byte [esp + 0x23], 0xc0
je 0x4010bfa
cmp dword [ebp + 0x14], esi
mov ecx, dword [esp + 0x18]
mov edx, 1
je 0x4010b05
cmp dword [esp + 0x80], edx
jle 0x4010b47
movzx eax, word [ecx + 2]
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + eax*4]
xor eax, dword [esp + 0x20]
test eax, 0xe7ffffff
jne 0x4010b47
add ecx, 2
sub dword [esp + 0x80], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x80]
xor ebx, ebx
sub eax, edx
je 0x4010b1e
sub eax, edx
je 0x4010b1a
movzx ebx, word [ecx + 4]
movzx esi, word [ecx + 2]
mov edx, dword [ebp + 0x18]
movzx eax, word [edx + 4]
test eax, eax
mov ecx, dword [esp + 0x18]
movzx ecx, word [ecx]
je 0x4010be6
cmp word [edx + 6], cx
jbe 0x4010b4d
add edx, 0x10
sub eax, 1
jne 0x4010b34
jmp 0x4010be6
mov dword [esp + 0x34], esi
jmp 0x4010b05
test eax, eax
je 0x4010be6
cmp word [edx + 6], cx
jne 0x4010be6
cmp si, word [edx + 0xc]
jb 0x4010be6
cmp si, word [edx + 0xe]
ja 0x4010be6
movzx eax, word [edx + 8]
mov ecx, dword [ebp + 0x1c]
lea ecx, [ecx + eax*8]
movzx eax, word [edx + 0xa]
test eax, eax
je 0x4010be6
cmp word [ecx], si
jbe 0x4010b90
add ecx, 8
sub eax, 1
jne 0x4010b81
jmp 0x4010be6
test eax, eax
je 0x4010be6
cmp word [ecx], si
jne 0x4010be6
movzx edx, word [ecx + 2]
test dx, dx
je 0x4010bb1
cmp dx, bx
je 0x4010bc7
add ecx, 8
sub eax, 1
jne 0x4010b94
jmp 0x4010be6
cmp dword [esp + 0x34], 0
jne 0x4010bdb
add dword [esp + 0x18], 2
sub dword [esp + 0x80], 1
jmp 0x4010bdb
cmp dword [esp + 0x34], 0
jne 0x4010bdb
add dword [esp + 0x18], 4
sub dword [esp + 0x80], 2
mov ecx, dword [ecx + 4]
and ecx, dword [esp + 0x38]
mov dword [esp + 0x20], ecx
cmp dword [esp + 0x34], 0
je 0x4010bfa
sub dword [esp + 0x18], 2
add dword [esp + 0x80], 1
movzx edx, word [esp + 0x24]
mov al, byte [esp + 0x25]
cmp al, 0xb
mov cl, byte [esp + 0x21]
mov dword [esp + 0x44], edx
movzx edx, word [esp + 0x20]
mov byte [esp + 0x13], al
mov byte [esp + 0x6c], cl
mov dword [esp + 0x48], edx
jbe 0x4010c29
cmp cl, 0xb
ja 0x40115d8
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x1c]
xor eax, eax
cmp byte [esp + 0x13], al
jne 0x4010c62
add esi, 2
mov eax, 1
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010c62
movzx edx, word [esi]
mov edi, dword [ebp + 8]
mov edi, dword [edi + edx*4]
and edi, ebx
mov dword [esp + 0x24], edi
cmp byte [esp + 0x6c], 0
jne 0x4010c8e
add ecx, 2
sub dword [esp + 0x80], 1
mov dword [esp + 0x18], ecx
je 0x4010c89
movzx eax, word [ecx]
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4]
and eax, ebx
mov dword [esp + 0x20], eax
mov eax, 1
test byte [esp + 0x70], 2
je 0x4010ce9
cmp byte [esp + 0x13], 1
jne 0x4010cbd
add esi, 2
mov eax, 1
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010cbd
movzx edx, word [esi]
mov edi, dword [ebp + 8]
mov edi, dword [edi + edx*4]
and edi, ebx
mov dword [esp + 0x24], edi
cmp byte [esp + 0x6c], 1
jne 0x4010ce9
add ecx, 2
sub dword [esp + 0x80], 1
mov dword [esp + 0x18], ecx
je 0x4010ce4
movzx eax, word [ecx]
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4]
and eax, ebx
mov dword [esp + 0x20], eax
mov eax, 1
test byte [esp + 0x70], 4
je 0x4010d4e
mov dl, byte [esp + 0x13]
sub dl, 6
cmp dl, 5
ja 0x4010d1d
add esi, 2
mov eax, 1
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010d1d
movzx edx, word [esi]
mov edi, dword [ebp + 8]
mov edi, dword [edi + edx*4]
and edi, ebx
mov dword [esp + 0x24], edi
mov dl, byte [esp + 0x6c]
sub dl, 6
cmp dl, 5
ja 0x4010d4e
add ecx, 2
sub dword [esp + 0x80], 1
mov dword [esp + 0x18], ecx
je 0x4010d49
movzx eax, word [ecx]
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4]
and eax, ebx
mov dword [esp + 0x20], eax
mov eax, 1
cmp byte [esp + 0x13], 2
jne 0x4010dae
cmp dword [esp + 0x4c], 0
jne 0x4010d60
mov dword [esp + 0x4c], esi
movzx ecx, byte [esp + 0x24]
add ecx, ecx
mov dx, word [ecx + ecx + str.AEUETHssaeuethIJijOEoeD]
add ecx, ecx
mov cx, word [ecx + 0x4057592]
mov word [esp + 0x58], dx
mov word [esp + 0x5a], cx
mov ecx, dword [ebp + 8]
movzx edx, dx
mov edi, dword [ecx + edx*4]
mov ecx, dword [esp + 0x18]
mov eax, 1
add dword [esp + 0x78], eax
lea esi, [esp + 0x58]
and edi, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x60], 2
mov dword [esp + 0x24], edi
cmp byte [esp + 0x6c], 2
jne 0x4010e0b
cmp dword [esp + 0x50], 0
jne 0x4010dc0
mov dword [esp + 0x50], ecx
movzx ecx, byte [esp + 0x20]
add dword [esp + 0x80], 1
add ecx, ecx
mov ax, word [ecx + ecx + 0x4057592]
lea edx, [esp + 0x5c]
add ecx, ecx
mov dword [esp + 0x18], edx
mov dx, word [ecx + str.AEUETHssaeuethIJijOEoeD]
movzx ecx, dx
mov word [esp + 0x5c], dx
mov edx, dword [ebp + 8]
mov word [esp + 0x5e], ax
mov eax, dword [edx + ecx*4]
and eax, ebx
mov dword [esp + 0x64], 2
mov dword [esp + 0x20], eax
jmp 0x4010e0f
test eax, eax
je 0x4010e35
cmp dword [esp + 0x78], 0
je 0x40108b0
cmp dword [esp + 0x80], 0
je 0x40108b0
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x1c]
jmp 0x4010930
movzx ecx, byte [esp + 0x13]
sub ecx, 1
je 0x4010ec4
sub ecx, 5
mov edx, dword [esp + 0x14]
jne 0x4010f45
test dword [esp + 0x70], 0x1000
jne 0x4010f45
cmp byte [esp + 0x6c], 6
je 0x4010f45
cmp edx, 6
jg 0x4010e79
jne 0x4010e9a
cmp dword [esp + 0x54], 0
jne 0x4010e9a
jmp 0x4010e81
mov dword [esp + 0x40], 0
mov edx, 6
mov dword [esp + 0x54], 1
mov dword [esp + 0x28], 3
mov dword [esp + 0x14], edx
add esi, 2
mov eax, 1
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010f45
movzx ecx, word [esi]
mov edi, dword [ebp + 8]
mov edi, dword [edi + ecx*4]
and edi, ebx
mov dword [esp + 0x24], edi
jmp 0x4010f45
mov dl, byte [esp + 0x13]
cmp byte [esp + 0x6c], dl
mov edx, dword [esp + 0x14]
je 0x4010f41
test edx, edx
jg 0x4010edc
cmp dword [ebp + 0xc], 0
je 0x4010eea
xor edx, edx
mov dword [esp + 0x28], 3
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x78]
add eax, 0xffffffff
mov esi, dword [esp + 0x1c]
je 0x4010f1e
mov eax, dword [ebp + 8]
lea ebx, [ebx]
movzx ecx, word [esi + 2]
cmp byte [eax + ecx*4 + 1], 1
jne 0x4010f1e
mov ecx, dword [esp + 0x78]
sub ecx, 1
add esi, 2
cmp ecx, 1
mov dword [esp + 0x78], ecx
jne 0x4010f00
add esi, 2
mov eax, 1
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010f45
movzx ecx, word [esi]
mov edi, dword [ebp + 8]
mov edi, dword [edi + ecx*4]
and edi, ebx
mov dword [esp + 0x24], edi
jmp 0x4010f45
mov esi, dword [esp + 0x1c]
movzx ecx, byte [esp + 0x6c]
sub ecx, 1
je 0x4011081
sub ecx, 5
jne 0x40110fa
test dword [esp + 0x70], 0x1000
jne 0x40110fa
cmp byte [esp + 0x13], 6
je 0x4010fcd
cmp edx, 6
jg 0x4010fae
jne 0x4010f7f
cmp dword [esp + 0x40], 0
je 0x4010fb6
mov eax, 1
add dword [esp + 0x18], 2
sub dword [esp + 0x80], eax
je 0x40110fe
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
mov edx, dword [ebp + 8]
mov eax, dword [edx + ecx*4]
and eax, ebx
mov dword [esp + 0x20], eax
jmp 0x40110fe
mov dword [esp + 0x54], 0
mov eax, 1
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 6
jmp 0x4010f84
mov ecx, 6
cmp edx, ecx
jg 0x401101f
jne 0x4011057
cmp dword [esp + 0x54], 0
je 0x4010ffd
cmp dword [esp + 0x40], 0
jne 0x4011057
mov eax, 1
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x54], eax
jmp 0x401105c
cmp dword [esp + 0x40], 0
je 0x401101f
mov eax, 1
mov dword [esp + 0x28], 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x54], eax
jmp 0x401105c
mov dl, byte [esp + 0x20]
cmp byte [esp + 0x24], dl
je 0x40110fa
mov esi, dword [esp + 0x1c]
movzx eax, dl
cmp byte [esp + 0x24], al
mov dword [esp + 0x14], ecx
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov eax, 1
mov dword [esp + 0x40], eax
mov dword [esp + 0x54], eax
jmp 0x401105c
mov eax, 1
add esi, 2
sub dword [esp + 0x78], eax
mov dword [esp + 0x1c], esi
je 0x4010f84
movzx ecx, word [esi]
mov edx, dword [ebp + 8]
mov edi, dword [edx + ecx*4]
and edi, ebx
mov dword [esp + 0x24], edi
jmp 0x4010f84
mov cl, byte [esp + 0x13]
cmp byte [esp + 0x6c], cl
je 0x40110fa
cmp dword [esp + 0x14], 0
jg 0x4011098
cmp dword [ebp + 0xc], 0
je 0x40110a8
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x80]
lea edx, [ecx - 1]
test edx, edx
mov edx, dword [esp + 0x18]
je 0x40110d6
mov eax, dword [ebp + 8]
lea ecx, [ecx]
movzx esi, word [edx + 2]
cmp byte [eax + esi*4 + 1], 1
jne 0x40110d6
sub ecx, 1
add edx, 2
cmp ecx, 1
jne 0x40110c0
add edx, 2
sub ecx, 1
mov dword [esp + 0x18], edx
mov dword [esp + 0x80], ecx
je 0x40110fe
movzx eax, word [edx]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + eax*4]
and eax, ebx
mov dword [esp + 0x20], eax
jmp 0x40110fe
test eax, eax
je 0x4011124
cmp dword [esp + 0x78], 0
je 0x40108b0
cmp dword [esp + 0x80], 0
je 0x40108b0
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x1c]
jmp 0x4010930
cmp byte [esp + 0x13], 3
jne 0x4011303
mov dl, byte [esp + 0x27]
xor esi, esi
and dl, 0x3f
cmp byte [esp + 0x24], 1
mov dword [esp + 0x2c], esi
ja 0x401124f
mov ecx, dword [esp + 0x1c]
mov edi, 2
add ecx, 0xfffffffe
mov esi, 0xffff0000
jmp 0x4011160
cmp dword [esp + 0x74], 0
je 0x4011226
mov eax, dword [esp + 0x1c]
sub eax, edi
cmp eax, dword [esp + 0x74]
jb 0x4011226
movzx eax, word [ecx]
mov esi, dword [ebp + 8]
mov esi, dword [esi + eax*4]
and esi, ebx
mov dword [esp + 0x3c], esi
mov al, byte [esp + 0x3d]
cmp al, 3
jae 0x40111a7
cmp al, 2
mov esi, 0xffff0000
je 0x4011226
add edi, 2
sub ecx, 2
jmp 0x4011160
jne 0x401121d
mov al, byte [esp + 0x3c]
cmp al, 1
ja 0x40111b9
add edi, 2
sub ecx, 2
jmp 0x4011153
xor ecx, ecx
mov ch, byte [ebp + 0x20]
mov cl, al
mov si, cx
mov cl, byte [esp + 0x3f]
and cl, 0x3f
mov bl, cl
mov al, cl
and bl, 0xc6
and al, 0xe4
cmp byte [esp + 0x24], 0
mov word [esp + 0x3c], si
mov byte [esp + 0x2c], bl
mov byte [esp + 0x2e], al
jne 0x4011200
movzx edx, si
mov esi, dword [esp + 0x3c]
and cl, 0xc5
mov dword [esp + 0x44], edx
mov byte [esp + 0x2d], 4
mov byte [esp + 0x2f], cl
jmp 0x4011231
mov esi, dword [esp + 0x3c]
mov eax, esi
and eax, 0xff87
and dl, 0xc5
mov dword [esp + 0x44], eax
mov byte [esp + 0x2d], 5
mov byte [esp + 0x2f], dl
jmp 0x401122a
movzx eax, word [esp + 0x3c]
mov dword [esp + 0x44], eax
mov bl, byte [esp + 0x2c]
cmp byte [esp + 0x24], 1
ja 0x401127e
cmp esi, 0xffff0000
jne 0x401127e
xor ecx, ecx
mov dword [esp + 0x44], 0xffff
mov dword [esp + 0x24], esi
mov dword [esp + 0x2c], ecx
mov bl, cl
jmp 0x4011287
xor ecx, ecx
mov ch, byte [ebp + 0x20]
mov bl, dl
and bl, 0xc6
mov byte [esp + 0x2c], bl
mov byte [esp + 0x2d], 3
mov cl, byte [esp + 0x24]
movzx eax, cx
mov dword [esp + 0x44], eax
mov al, dl
and al, 0xe4
and dl, 0xc5
mov byte [esp + 0x2e], al
mov byte [esp + 0x2f], dl
jmp 0x401122a
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x27], 2
mov eax, dword [esp + 0x14]
cmp eax, 2
jle 0x4011303
cmp byte [esp + 0x6c], 3
je 0x401130e
test bl, bl
je 0x40112b4
test byte [esp + 0x70], 2
jne 0x40112b4
mov dword [esp + 0x28], 3
mov dword [esp + 0x14], 2
jmp 0x4011303
mov esi, 3
cmp eax, esi
jle 0x4011303
mov edx, ecx
shr edx, 8
test dl, dl
je 0x40112d3
test byte [esp + 0x70], 2
jne 0x40112d3
mov dword [esp + 0x14], esi
jmp 0x40112ff
cmp eax, 4
jle 0x4011303
mov edx, ecx
shr edx, 0x10
test dl, dl
je 0x40112eb
mov dword [esp + 0x14], 4
jmp 0x40112ff
cmp eax, 5
jle 0x4011303
shr ecx, 0x18
test cl, cl
je 0x4011303
mov dword [esp + 0x14], 5
mov dword [esp + 0x28], esi
cmp byte [esp + 0x6c], 3
jne 0x40115d8
mov al, byte [esp + 0x23]
xor ebp, ebp
xor ecx, ecx
and al, 0x3f
cmp byte [esp + 0x20], 1
mov dword [esp + 0x6c], ebp
ja 0x4011449
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x38]
mov edi, 2
add esi, 0xfffffffe
mov ecx, 0xffff0000
lea esp, [esp]
cmp dword [esp + 0x7c], 0
je 0x401141e
mov edx, dword [esp + 0x18]
sub edx, edi
cmp edx, dword [esp + 0x7c]
jb 0x401141e
movzx ecx, word [esi]
mov edx, dword [esp + 0x30]
mov edx, dword [edx + 8]
mov ecx, dword [edx + ecx*4]
and ecx, ebx
mov dword [esp + 0x3c], ecx
mov dl, byte [esp + 0x3d]
cmp dl, 3
jae 0x401138d
cmp dl, 2
mov ecx, 0xffff0000
je 0x401141e
add edi, 2
sub esi, 2
jmp 0x4011340
jne 0x4011415
mov cl, byte [esp + 0x3c]
cmp cl, 1
ja 0x40113a4
add edi, 2
sub esi, 2
jmp 0x4011337
mov esi, dword [esp + 0x30]
xor edx, edx
mov dh, byte [esi + 0x20]
mov dl, cl
mov cl, byte [esp + 0x3f]
and cl, 0x3f
mov bl, cl
and bl, 0xe4
mov byte [esp + 0x6e], bl
mov si, dx
mov dl, cl
and dl, 0xc6
cmp byte [esp + 0x20], 0
mov word [esp + 0x3c], si
mov byte [esp + 0x6c], dl
jne 0x40113f4
and cl, 0xc5
movzx eax, si
mov byte [esp + 0x6f], cl
mov ecx, dword [esp + 0x3c]
mov byte [esp + 0x6d], 4
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x48], eax
jmp 0x4011429
mov ecx, dword [esp + 0x3c]
mov esi, ecx
and esi, 0xff87
and al, 0xc5
mov byte [esp + 0x6d], 5
mov byte [esp + 0x6f], al
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x48], esi
jmp 0x4011422
movzx edx, word [esp + 0x3c]
mov dword [esp + 0x48], edx
mov dl, byte [esp + 0x6c]
cmp byte [esp + 0x20], 1
ja 0x4011480
cmp ecx, 0xffff0000
jne 0x4011480
xor ebp, ebp
mov dword [esp + 0x6c], ebp
mov dl, byte [esp + 0x6c]
mov dword [esp + 0x48], 0xffff
mov dword [esp + 0x20], ecx
jmp 0x4011485
mov esi, dword [esp + 0x30]
xor edx, edx
mov dh, byte [esi + 0x20]
mov bl, al
and bl, 0xe4
mov byte [esp + 0x6d], 3
mov byte [esp + 0x6e], bl
mov dl, byte [esp + 0x20]
movzx edx, dx
mov dword [esp + 0x48], edx
mov dl, al
and dl, 0xc6
and al, 0xc5
mov byte [esp + 0x6c], dl
mov byte [esp + 0x6f], al
mov ebp, dword [esp + 0x6c]
jmp 0x4011422
mov byte [esp + 0x23], 2
mov esi, dword [esp + 0x14]
mov edi, 2
cmp esi, edi
jle 0x40115d8
cmp byte [esp + 0x13], 3
je 0x4011535
test dl, dl
je 0x40114bd
test byte [esp + 0x70], 2
jne 0x40114bd
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], edi
jmp 0x40115d8
cmp esi, 3
jle 0x40115d8
mov eax, ebp
shr eax, 8
test al, al
je 0x40114eb
test byte [esp + 0x70], 2
jne 0x40114eb
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], 3
jmp 0x40115d8
cmp esi, 4
jle 0x40115d8
mov ecx, ebp
shr ecx, 0x10
test cl, cl
je 0x4011512
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], 4
jmp 0x40115d8
cmp esi, 5
jle 0x40115d8
mov edx, ebp
shr edx, 0x18
test dl, dl
je 0x40115d8
mov dword [esp + 0x28], 1
jmp 0x40115d0
movzx eax, byte [esp + 0x2c]
cmp al, dl
je 0x4011559
test byte [esp + 0x70], 2
jne 0x4011559
cmp al, dl
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], edi
jmp 0x40115d8
cmp esi, 3
jle 0x40115d8
mov cl, byte [esp + 0x2d]
mov eax, ebp
shr eax, 8
cmp cl, al
je 0x401158a
test byte [esp + 0x70], 2
jne 0x401158a
cmp cl, al
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 3
jmp 0x40115d8
cmp esi, 4
jle 0x40115d8
mov cl, byte [esp + 0x2e]
mov eax, ebp
shr eax, 0x10
cmp cl, al
je 0x40115b2
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 4
jmp 0x40115d8
cmp esi, 5
jle 0x40115d8
mov cl, byte [esp + 0x2f]
mov eax, ebp
shr eax, 0x18
cmp cl, al
je 0x40115d8
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 5
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
cmp cx, ax
jne 0x4011770
test byte [esp + 0x70], 2
jne 0x40116e2
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x30]
jg 0x4011609
cmp dword [edi + 0xc], 0
je 0x40116e2
cmp dword [esp + 0x4c], 0
movzx ax, byte [esp + 0x26]
movzx dx, byte [esp + 0x22]
movzx ecx, ax
movzx eax, dx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x48], eax
jne 0x40116b3
mov edx, dword [esp + 0x78]
lea ecx, [edx - 1]
test ecx, ecx
je 0x40116b3
mov eax, dword [edi + 8]
mov si, word [esp + 0x6c]
mov ebp, dword [esp + 0x1c]
movzx ecx, word [ebp + 2]
mov ecx, dword [eax + ecx*4]
cmp ch, 1
jne 0x4011666
shr ecx, 0x10
movzx cx, cl
sub edx, 1
add si, cx
add ebp, 2
cmp edx, 1
jne 0x4011645
mov dword [esp + 0x78], edx
cmp dword [esp + 0x50], 0
mov ebx, dword [esp + 0x80]
jne 0x40116be
lea edx, [ebx - 1]
test edx, edx
je 0x40116be
mov edx, dword [edi + 8]
mov ax, word [esp + 0x48]
mov edi, dword [esp + 0x18]
jmp 0x4011690
movzx ecx, word [edi + 2]
mov ecx, dword [edx + ecx*4]
cmp ch, 1
jne 0x40116c7
shr ecx, 0x10
movzx cx, cl
sub ebx, 1
add ax, cx
add edi, 2
cmp ebx, 1
jne 0x4011690
jmp 0x40116c7
mov si, word [esp + 0x6c]
mov ebp, dword [esp + 0x1c]
jmp 0x401166a
movzx eax, word [esp + 0x48]
mov edi, dword [esp + 0x18]
cmp si, ax
je 0x40116f1
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], 0
jmp 0x40116f1
mov ebx, dword [esp + 0x80]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov edx, 1
test byte [esp + 0x70], dl
jne 0x4011724
cmp dword [esp + 0x14], edx
jle 0x4011724
movzx eax, byte [esp + 0x23]
mov cl, byte [esp + 0x27]
and al, 0x3f
and cl, 0x3f
cmp cl, al
je 0x4011724
sbb eax, eax
and eax, 0xfffffffe
add eax, 3
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x4c]
xor eax, eax
cmp ecx, eax
je 0x401173a
sub dword [esp + 0x60], edx
jne 0x401173a
mov ebp, ecx
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x50]
cmp ecx, eax
je 0x401174e
sub dword [esp + 0x64], edx
jne 0x401174e
mov edi, ecx
mov dword [esp + 0x50], eax
sub dword [esp + 0x78], edx
add ebp, 2
add edi, 2
sub ebx, edx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], edi
mov ebx, ebp
jmp 0x40108f0
pop ebp
sbb eax, eax
pop edi
and eax, 0xfffffffe
pop esi
add eax, 3
pop ebx
add esp, 0x58
ret 0x18
mov edi, dword [esp + 0x78]
test edi, edi
jne 0x40117ad
mov eax, dword [esp + 0x80]
test eax, eax
je 0x40117a6
test ebx, ebx
js 0x40117a6
mov esi, dword [esp + 0x18]
mov edi, eax
mov eax, 1
jmp 0x40117b6
cmp dword [esp + 0x14], 7
jmp 0x40117fb
mov esi, dword [esp + 0x1c]
mov eax, 3
test edi, edi
mov ebp, dword [esp + 0x14]
je 0x40117f8
mov edx, dword [esp + 0x30]
mov edx, dword [edx + 8]
movzx ecx, word [esi]
movzx ecx, byte [edx + ecx*4 + 1]
cmp ecx, 0xb
ja case.0x40117d9.2
movzx ecx, byte [ecx + 0x4011820]
jmp dword [ecx*4 + 0x4011810]
test bl, 2
jne case.0x40117d9.0
test ebp, ebp
jg case.0x40117d9.2
jmp case.0x40117d9.0
test bl, 4
je case.0x40117d9.2
add esi, 2
sub edi, 1
jne 0x40117c5
cmp ebp, 7
mov eax, 2
je case.0x40117d9.2
mov eax, dword [esp + 0x28]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x58
ret 0x18