Function at 0x40e12c
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x40
push 0
push 0
dec ecx
jne 0x40e134
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x40fe2f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebx + 0x54]
call fcn.00406068
mov eax, dword [ebx + 0x3c]
call fcn.00406068
mov eax, dword [ebx + 0xdc]
call fcn.0040a04c
mov eax, dword [ebx + 0xe4]
call fcn.0040a04c
mov eax, dword [ebx + 0xe8]
call fcn.0040a04c
mov eax, dword [ebx + 0xec]
call fcn.0040a04c
mov eax, dword [ebx + 0xe0]
call fcn.0040a04c
mov eax, dword [ebx + 0xf0]
call fcn.0040a04c
mov eax, dword [ebx + 0xf4]
call fcn.0040a04c
mov eax, dword [ebx + 0xf8]
call fcn.0040a04c
mov eax, dword [ebx + 0xfc]
call fcn.0040a04c
mov eax, dword [ebx + 0x100]
call fcn.0040a04c
lea eax, [ebp - 4]
call fcn.0040339c
lea eax, [ebp - 8]
call fcn.0040339c
lea eax, [ebp - 0xc]
call fcn.0040339c
lea eax, [ebp - 0x10]
call fcn.0040339c
mov eax, ebx
mov edx, 0x40fe48
call fcn.0040dd30
mov edx, eax
mov eax, dword [ebx + 0x70]
call fcn.00409a8c
mov eax, ebx
mov edx, 0x40fe60
call fcn.0040dd30
mov edx, eax
mov eax, dword [ebx + 0x6c]
call fcn.00409a8c
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
test al, al
jne 0x40e248
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
jne 0x40e248
mov eax, dword [ebx + 0x70]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0xd4]
xor edx, edx
call fcn.00409a8c
mov eax, dword [ebx + 0xd4]
call fcn.00409a6c
mov edx, eax
mov eax, dword [ebx + 0x6c]
call fcn.00408c48
mov eax, dword [ebx + 0xd4]
call fcn.00409a6c
mov edx, eax
mov eax, dword [ebx + 0x70]
call fcn.00408c48
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
test al, al
je 0x40e2a9
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
je 0x40e2a9
mov eax, dword [ebx + 0x6c]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
mov edx, eax
xor dl, 1
mov eax, dword [ebx + 0x70]
call fcn.00409a8c
mov esi, 1
mov ax, word [0x40fe6c]
call fcn.00406d8c
test al, al
jne 0x40e4e3
mov ax, word [0x40fe70]
call fcn.00406d8c
test al, al
jne 0x40e4e3
mov ax, word [0x40fe74]
call fcn.00406d8c
test al, al
jne 0x40e4e3
mov ax, word [0x40fe78]
call fcn.00406d8c
test al, al
jne 0x40e4e3
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40e50e
jmp 0x40e4e3
lea edx, [ebp - 0x3c]
mov eax, esi
call fcn.00407d78
mov eax, dword [ebp - 0x3c]
push eax
mov edx, 0x40fe88
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 4]
pop edx
call fcn.00404c04
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 4]
call fcn.00407e64
mov edx, dword [ebp - 0x40]
mov eax, dword [ebx + 0xdc]
call fcn.0040a03c
mov eax, dword [ebx + 0x100]
xor edx, edx
call fcn.0040a03c
lea eax, [ebp - 0x44]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x44]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 8]
mov edx, 0x40fee4
call fcn.00404c04
cmp dword [ebp - 8], 0
je 0x40e3dd
lea eax, [ebp - 0x48]
call fcn.00404a5c
lea eax, [ebp - 0x48]
mov edx, dword [ebp - 8]
call fcn.00403528
mov eax, dword [ebp - 0x48]
call fcn.00407f9c
test al, al
je 0x40e3dd
lea eax, [ebp - 0x50]
call fcn.00404a5c
lea eax, [ebp - 0x50]
mov edx, dword [ebp - 8]
call fcn.00403528
mov edx, dword [ebp - 0x50]
lea ecx, [ebp - 0x4c]
mov eax, ebx
call fcn.004143ec
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebx + 0xf8]
call fcn.0040a03c
jmp 0x40e415
lea eax, [ebp - 0x58]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x58]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 0x54]
mov edx, 0x40fef8
call fcn.00404c04
mov edx, dword [ebp - 0x54]
mov eax, dword [ebx + 0xf8]
call fcn.0040a03c
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x5c]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 8]
mov edx, 0x40ff0c
call fcn.00404c04
cmp dword [ebp - 8], 0
je 0x40e462
lea ecx, [ebp - 0x60]
mov eax, ebx
mov edx, dword [ebp - 8]
call fcn.004146b0
mov edx, dword [ebp - 0x60]
mov eax, dword [ebx + 0xfc]
call fcn.0040a03c
jmp 0x40e484
lea ecx, [ebp - 0x64]
mov edi, dword [ebx + 0xf8]
mov edx, dword [edi + 0x1c]
dec edx
mov eax, edi
call fcn.0040a0a8
mov edx, dword [ebp - 0x64]
mov eax, dword [ebx + 0xfc]
call fcn.0040a03c
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
je 0x40e4b3
lea ecx, [ebp - 0x68]
mov eax, dword [ebx + 0xf8]
mov edx, dword [eax + 0x1c]
dec edx
mov eax, dword [ebx + 0xf8]
call fcn.0040a0a8
mov edx, dword [ebp - 0x68]
mov eax, dword [ebx + 0x54]
call fcn.00406e34
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
test al, al
je 0x40e4e2
lea ecx, [ebp - 0x6c]
mov eax, dword [ebx + 0xfc]
mov edx, dword [eax + 0x1c]
dec edx
mov eax, dword [ebx + 0xfc]
call fcn.0040a0a8
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebx + 0x54]
call fcn.00406e34
inc esi
lea edx, [ebp - 0x70]
mov eax, esi
call fcn.00407d78
mov eax, dword [ebp - 0x70]
push eax
mov edx, 0x40fe88
mov eax, 0x80000001
call fcn.00404ad4
pop edx
call fcn.00404d54
test al, al
jne 0x40e312
mov ax, word [0x40ff20]
call fcn.00406d8c
test al, al
jne 0x40e53f
mov ax, word [0x40ff24]
call fcn.00406d8c
test al, al
jne 0x40e53f
mov ax, word [0x40ff28]
call fcn.00406d8c
test al, al
je 0x40e7aa
mov eax, dword [ebx + 0x9c]
xor edx, edx
call fcn.00408c48
jmp 0x40e76f
lea edx, [ebp - 0x78]
mov eax, esi
call fcn.00407d78
mov ecx, dword [ebp - 0x78]
lea eax, [ebp - 0x74]
mov edx, 0x40ff34
call fcn.0040356c
mov edx, dword [ebp - 0x74]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 4]
xor edx, edx
call fcn.00404c04
lea edx, [ebp - 0x7c]
mov eax, dword [ebp - 4]
call fcn.00407e64
mov edx, dword [ebp - 0x7c]
mov eax, dword [ebx + 0xdc]
call fcn.0040a03c
mov eax, dword [ebx + 0x100]
xor edx, edx
call fcn.0040a03c
lea eax, [ebp - 0x80]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x80]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 8]
mov edx, 0x40fee4
call fcn.00404c04
cmp dword [ebp - 8], 0
je 0x40e63f
lea eax, [ebp - 0x84]
call fcn.00404a5c
lea eax, [ebp - 0x84]
mov edx, dword [ebp - 8]
call fcn.00403528
mov eax, dword [ebp - 0x84]
call fcn.00407f9c
test al, al
je 0x40e63f
lea eax, [ebp - 0x8c]
call fcn.00404a5c
lea eax, [ebp - 0x8c]
mov edx, dword [ebp - 8]
call fcn.00403528
mov edx, dword [ebp - 0x8c]
lea ecx, [ebp - 0x88]
mov eax, ebx
call fcn.004143ec
mov edx, dword [ebp - 0x88]
mov eax, dword [ebx + 0xf8]
call fcn.0040a03c
jmp 0x40e683
lea eax, [ebp - 0x94]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x94]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 0x90]
mov edx, 0x40fef8
call fcn.00404c04
mov edx, dword [ebp - 0x90]
mov eax, dword [ebx + 0xf8]
call fcn.0040a03c
lea eax, [ebp - 0x98]
mov ecx, dword [ebp - 4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x98]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 8]
mov edx, 0x40ff0c
call fcn.00404c04
cmp dword [ebp - 8], 0
je 0x40e6dc
lea ecx, [ebp - 0x9c]
mov eax, ebx
mov edx, dword [ebp - 8]
call fcn.004146b0
mov edx, dword [ebp - 0x9c]
mov eax, dword [ebx + 0xfc]
call fcn.0040a03c
jmp 0x40e704
lea ecx, [ebp - 0xa0]
mov edi, dword [ebx + 0xf8]
mov edx, dword [edi + 0x1c]
dec edx
mov eax, edi
call fcn.0040a0a8
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebx + 0xfc]
call fcn.0040a03c
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
je 0x40e739
lea ecx, [ebp - 0xa4]
mov eax, dword [ebx + 0xf8]
mov edx, dword [eax + 0x1c]
dec edx
mov eax, dword [ebx + 0xf8]
call fcn.0040a0a8
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebx + 0x54]
call fcn.00406e34
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
test al, al
je 0x40e76e
lea ecx, [ebp - 0xa8]
mov eax, dword [ebx + 0xfc]
mov edx, dword [eax + 0x1c]
dec edx
mov eax, dword [ebx + 0xfc]
call fcn.0040a0a8
mov edx, dword [ebp - 0xa8]
mov eax, dword [ebx + 0x54]
call fcn.00406e34
inc esi
lea edx, [ebp - 0xb0]
mov eax, esi
call fcn.00407d78
mov ecx, dword [ebp - 0xb0]
lea eax, [ebp - 0xac]
mov edx, 0x40ff34
call fcn.0040356c
mov edx, dword [ebp - 0xac]
mov eax, 0x80000001
call fcn.00404d34
test al, al
jne 0x40e551
xor esi, esi
jmp 0x40e7e4
lea eax, [ebp - 0xb4]
push eax
mov eax, dword [ebx + 0x54]
xor ecx, ecx
mov edx, esi
call fcn.00405ee4
cmp dword [ebp - 0xb4], 0
jne 0x40e7e3
mov eax, dword [ebx + 0xdc]
mov edx, esi
call fcn.0040a07c
mov eax, dword [ebx + 0x54]
mov edx, esi
call fcn.00405fcc
jmp 0x40e7e4
inc esi
mov eax, dword [ebx + 0xdc]
cmp esi, dword [eax + 0x1c]
jl 0x40e7ae
mov eax, dword [ebx + 0xdc]
mov eax, dword [eax + 0x1c]
mov dword [ebx + 0x108], eax
xor esi, esi
lea ecx, [ebp - 0xbc]
lea edi, [esi + 0x100]
mov eax, edi
mov edx, 3
call fcn.00407d0c
mov ecx, dword [ebp - 0xbc]
lea eax, [ebp - 0xb8]
mov edx, 0x40ff58
call fcn.0040356c
mov edx, dword [ebp - 0xb8]
mov eax, 0x80000001
call fcn.00404d34
test al, al
je 0x40ea4c
push 8
lea ecx, [ebp - 0xc4]
mov eax, edi
mov edx, 3
call fcn.00407d0c
mov ecx, dword [ebp - 0xc4]
lea eax, [ebp - 0xc0]
mov edx, 0x40ff58
call fcn.0040356c
mov edx, dword [ebp - 0xc0]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ff8c
call fcn.00404d8c
lea ecx, [ebp - 8]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
lea eax, [ebp - 0xc8]
push eax
mov ecx, 4
mov edx, 1
mov eax, dword [ebp - 8]
call fcn.00403778
mov eax, dword [ebp - 0xc8]
push eax
lea eax, [ebp - 0xcc]
push eax
mov ecx, 8
mov edx, 5
mov eax, dword [ebp - 8]
call fcn.00403778
mov edx, dword [ebp - 0xcc]
pop eax
call fcn.0040366c
jne 0x40e910
lea eax, [ebp - 0xd0]
push eax
mov ecx, 4
mov edx, 1
mov eax, dword [ebp - 8]
call fcn.00403778
mov ecx, dword [ebp - 0xd0]
lea eax, [ebp - 8]
mov edx, 0x40ffa0
call fcn.0040356c
mov byte [ebp - 0x31], 0
mov eax, dword [ebx + 0xdc]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40e958
inc edi
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0xd4]
mov eax, dword [ebx + 0xdc]
mov edx, dword [ebp - 0x14]
call fcn.0040a0a8
mov eax, dword [ebp - 0xd4]
mov edx, dword [ebp - 8]
call fcn.0040366c
jne 0x40e952
mov byte [ebp - 0x31], 1
inc dword [ebp - 0x14]
dec edi
jne 0x40e92a
cmp byte [ebp - 0x31], 0
je 0x40ea4c
mov eax, dword [ebx + 0xe8]
mov edx, dword [ebp - 8]
call fcn.0040a03c
push 8
lea ecx, [ebp - 0xdc]
lea edi, [esi + 0x100]
mov eax, edi
mov edx, 3
call fcn.00407d0c
mov ecx, dword [ebp - 0xdc]
lea eax, [ebp - 0xd8]
mov edx, 0x40ff58
call fcn.0040356c
mov edx, dword [ebp - 0xd8]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffb0
call fcn.00404d8c
lea ecx, [ebp - 0xe0]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0xe0]
mov eax, dword [ebx + 0xe4]
call fcn.0040a03c
push 8
lea ecx, [ebp - 0xe8]
mov eax, edi
mov edx, 3
call fcn.00407d0c
mov ecx, dword [ebp - 0xe8]
lea eax, [ebp - 0xe4]
mov edx, 0x40ff58
call fcn.0040356c
mov edx, dword [ebp - 0xe4]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffc8
call fcn.00404d8c
lea ecx, [ebp - 0xec]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0xec]
mov eax, dword [ebx + 0xec]
call fcn.0040a03c
inc esi
cmp esi, 0x64
jne 0x40e800
mov eax, dword [ebx + 0xe4]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40eb33
inc edi
xor esi, esi
mov eax, dword [ebx + 0xdc]
mov eax, dword [eax + 0x1c]
dec eax
test eax, eax
jl 0x40eb2b
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0xf0]
mov eax, dword [ebx + 0xdc]
mov edx, dword [ebp - 0x14]
call fcn.0040a0a8
mov eax, dword [ebp - 0xf0]
push eax
lea ecx, [ebp - 0xf4]
mov eax, dword [ebx + 0xe8]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0xf4]
pop eax
call fcn.0040366c
jne 0x40eb1f
lea eax, [ebp - 0xf8]
push eax
lea ecx, [ebp - 0xfc]
mov eax, dword [ebx + 0xec]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0xfc]
push eax
lea ecx, [ebp - 0x100]
mov eax, dword [ebx + 0xe4]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x100]
mov eax, ebx
pop ecx
call fcn.0041252c
mov eax, dword [ebp - 0xf8]
push eax
mov eax, dword [ebx + 0x54]
mov ecx, 1
mov edx, dword [ebp - 0x14]
call fcn.00405f64
jmp 0x40eb2b
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x40ea88
inc esi
dec edi
jne 0x40ea6b
mov esi, dword [ebx + 0x104]
cmp esi, 0x804
jne 0x40eb4e
lea eax, [ebp - 4]
mov edx, 0x40ffdc
call fcn.00403434
cmp esi, 0x404
jne 0x40eb63
lea eax, [ebp - 4]
mov edx, 0x40ffe8
call fcn.00403434
cmp esi, 0x412
jne 0x40eb78
lea eax, [ebp - 4]
mov edx, 0x40fff4
call fcn.00403434
mov esi, 1
lea edi, [ebx + 0x468]
push 0x410000
push dword [ebp - 4]
lea edx, [ebp - 0x108]
mov eax, esi
dec eax
call fcn.00407d78
push dword [ebp - 0x108]
lea eax, [ebp - 0x104]
mov edx, 3
call fcn.004035e0
mov edx, dword [ebp - 0x104]
mov eax, 0x80000001
call fcn.00404d34
test al, al
je 0x40eca0
push 8
push 0x410000
push dword [ebp - 4]
lea edx, [ebp - 0x110]
mov eax, esi
dec eax
call fcn.00407d78
push dword [ebp - 0x110]
lea eax, [ebp - 0x10c]
mov edx, 3
call fcn.004035e0
mov edx, dword [ebp - 0x10c]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffb0
call fcn.00404d8c
lea ecx, [ebp - 0x114]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0x114]
mov eax, edi
call fcn.004033f0
push 8
push 0x410000
push dword [ebp - 4]
lea edx, [ebp - 0x11c]
mov eax, esi
dec eax
call fcn.00407d78
push dword [ebp - 0x11c]
lea eax, [ebp - 0x118]
mov edx, 3
call fcn.004035e0
mov edx, dword [ebp - 0x118]
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffc8
call fcn.00404d8c
lea ecx, [ebp - 0x120]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0x120]
lea eax, [edi + 4]
call fcn.004033f0
jmp 0x40ecaf
mov eax, edi
call fcn.0040339c
lea eax, [edi + 4]
call fcn.0040339c
inc esi
add edi, 8
cmp esi, 4
jne 0x40eb83
cmp dword [ebx + 0x104], 0x411
jne 0x40ed9d
mov eax, dword [ebx + 0x8c]
mov edx, 1
call fcn.00409cc4
mov eax, dword [ebx + 0x8c]
mov edx, 2
call fcn.00409cc4
lea eax, [ebx + 0x468]
call fcn.0040339c
lea eax, [ebx + 0x46c]
call fcn.0040339c
mov edx, 0x410034
mov eax, 0x80000001
call fcn.00404d34
test al, al
je 0x40ed9d
push 8
mov edx, 0x410034
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffb0
call fcn.00404d8c
lea ecx, [ebp - 0x124]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0x124]
lea eax, [ebx + 0x468]
call fcn.004033f0
push 8
mov edx, 0x410034
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x18]
mov edx, 0x40ffc8
call fcn.00404d8c
lea ecx, [ebp - 0x128]
mov edx, 8
mov eax, dword [ebp - 0x18]
call fcn.00407d0c
mov edx, dword [ebp - 0x128]
lea eax, [ebx + 0x46c]
call fcn.004033f0
lea eax, [ebp - 0x12c]
push eax
mov ecx, dword [ebx + 0x46c]
mov edx, dword [ebx + 0x468]
mov eax, ebx
call fcn.0041252c
mov edx, dword [ebp - 0x12c]
mov eax, dword [ebx + 0x90]
call fcn.004092dc
mov eax, dword [ebx + 0x54]
call fcn.004073b0
test eax, eax
jne 0x40ede0
mov eax, dword [ebx + 0x40]
xor edx, edx
call fcn.00408c48
jmp 0x40edea
mov eax, dword [ebx + 0x40]
mov dl, 1
call fcn.00408c48
mov eax, dword [ebx + 0x54]
call fcn.004073b0
mov esi, eax
mov eax, dword [ebx + 0x54]
call fcn.00409c20
dec eax
cmp esi, eax
jne 0x40ee0d
mov eax, dword [ebx + 0x44]
xor edx, edx
call fcn.00408c48
jmp 0x40ee17
mov eax, dword [ebx + 0x44]
mov dl, 1
call fcn.00408c48
call fcn.004058a0
mov dword [ebp - 0x1c], eax
call fcn.004058a0
mov dword [ebp - 0x20], eax
call fcn.004058a0
mov dword [ebp - 0x24], eax
call fcn.004058a0
mov dword [ebp - 0x28], eax
call fcn.004058a0
mov dword [ebp - 0x2c], eax
call fcn.004058a0
mov dword [ebp - 0x30], eax
mov edx, 0x41006c
mov eax, 0x80000002
call fcn.00404d34
test al, al
jne 0x40ef51
mov ax, word [0x40fe6c]
call fcn.00406d8c
test al, al
jne 0x40eead
mov ax, word [0x40fe70]
call fcn.00406d8c
test al, al
jne 0x40eead
mov ax, word [0x40fe74]
call fcn.00406d8c
test al, al
jne 0x40eead
mov ax, word [0x40fe78]
call fcn.00406d8c
test al, al
jne 0x40eead
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40ef51
mov edx, 0x41006c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x4100b0
mov edx, 0x4100c4
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x804
jne 0x40eef5
mov edx, 0x41006c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x4100d8
mov edx, 0x40fef8
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x404
jne 0x40ef1f
mov edx, 0x41006c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x4100ec
mov edx, 0x40fef8
call fcn.00404ca0
mov eax, dword [ebx + 0x104]
cmp eax, 0x404
je 0x40ef51
cmp eax, 0x804
je 0x40ef51
mov edx, 0x41006c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x410100
mov edx, 0x40fef8
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x404
jne 0x40f06b
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404d34
test al, al
jne 0x40f06b
mov ax, word [0x40fe6c]
call fcn.00406d8c
test al, al
jne 0x40efc7
mov ax, word [0x40fe70]
call fcn.00406d8c
test al, al
jne 0x40efc7
mov ax, word [0x40fe74]
call fcn.00406d8c
test al, al
jne 0x40efc7
mov ax, word [0x40fe78]
call fcn.00406d8c
test al, al
jne 0x40efc7
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40f06b
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x4100b0
mov edx, 0x4100c4
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x804
jne 0x40f00f
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x410150
mov edx, 0x40fef8
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x404
jne 0x40f039
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x410170
mov edx, 0x40fef8
call fcn.00404ca0
mov eax, dword [ebx + 0x104]
cmp eax, 0x404
je 0x40f06b
cmp eax, 0x804
je 0x40f06b
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x410190
mov edx, 0x40fef8
call fcn.00404ca0
cmp dword [ebx + 0x104], 0x804
jne 0x40f119
mov edx, 0x4101bc
mov eax, 0x80000002
call fcn.00404d34
test al, al
jne 0x40f119
mov ax, word [0x40fe6c]
call fcn.00406d8c
test al, al
jne 0x40f0dd
mov ax, word [0x40fe70]
call fcn.00406d8c
test al, al
jne 0x40f0dd
mov ax, word [0x40fe74]
call fcn.00406d8c
test al, al
jne 0x40f0dd
mov ax, word [0x40fe78]
call fcn.00406d8c
test al, al
jne 0x40f0dd
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40f119
mov edx, 0x4101bc
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x4100b0
mov edx, 0x4100c4
call fcn.00404ca0
mov edx, 0x41010c
mov eax, 0x80000002
call fcn.00404b34
mov ecx, 0x410200
mov edx, 0x40fef8
call fcn.00404ca0
mov edx, 0x410220
mov eax, 0x80000002
call fcn.00404ad4
mov edx, dword [ebp - 0x1c]
call fcn.00404e04
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f1f4
inc edi
xor esi, esi
lea eax, [ebp - 0x130]
push eax
lea ecx, [ebp - 0x134]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x134]
mov ecx, 4
mov edx, 5
call fcn.00403778
mov eax, dword [ebp - 0x130]
mov edx, 0x41025c
call fcn.0040366c
jne 0x40f1ec
cmp dword [ebx + 0x104], 0x404
jne 0x40f1bd
lea ecx, [ebp - 0x13c]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x13c]
lea edx, [ebp - 0x138]
call fcn.00407e64
mov edx, dword [ebp - 0x138]
mov eax, dword [ebp - 0x24]
call fcn.0040a03c
jmp 0x40f1ec
lea ecx, [ebp - 0x144]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x144]
lea edx, [ebp - 0x140]
call fcn.00407e64
mov edx, dword [ebp - 0x140]
mov eax, dword [ebp - 0x20]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f142
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f2b8
inc edi
xor esi, esi
lea eax, [ebp - 0x148]
push eax
lea ecx, [ebp - 0x14c]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x14c]
mov ecx, 4
mov edx, 5
call fcn.00403778
mov eax, dword [ebp - 0x148]
mov edx, 0x41026c
call fcn.0040366c
jne 0x40f2b0
cmp dword [ebx + 0x104], 0x404
jne 0x40f281
lea ecx, [ebp - 0x154]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x154]
lea edx, [ebp - 0x150]
call fcn.00407e64
mov edx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x20]
call fcn.0040a03c
jmp 0x40f2b0
lea ecx, [ebp - 0x15c]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x15c]
lea edx, [ebp - 0x158]
call fcn.00407e64
mov edx, dword [ebp - 0x158]
mov eax, dword [ebp - 0x24]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f206
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f31b
inc edi
xor esi, esi
lea ecx, [ebp - 0x160]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x160]
mov edx, 0x41027c
call fcn.0040366c
jne 0x40f317
lea ecx, [ebp - 0x168]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x168]
lea edx, [ebp - 0x164]
call fcn.00407e64
mov edx, dword [ebp - 0x164]
mov eax, dword [ebp - 0x28]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f2c6
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f39a
inc edi
xor esi, esi
lea eax, [ebp - 0x16c]
push eax
lea ecx, [ebp - 0x170]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x170]
mov ecx, 4
mov edx, 5
call fcn.00403778
mov eax, dword [ebp - 0x16c]
mov edx, 0x410290
call fcn.0040366c
jne 0x40f396
lea ecx, [ebp - 0x178]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x178]
lea edx, [ebp - 0x174]
call fcn.00407e64
mov edx, dword [ebp - 0x174]
mov eax, dword [ebp - 0x2c]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f329
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f419
inc edi
xor esi, esi
lea eax, [ebp - 0x17c]
push eax
lea ecx, [ebp - 0x180]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x180]
mov ecx, 4
mov edx, 5
call fcn.00403778
mov eax, dword [ebp - 0x17c]
mov edx, 0x4102a0
call fcn.0040366c
jne 0x40f415
lea ecx, [ebp - 0x188]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x188]
lea edx, [ebp - 0x184]
call fcn.00407e64
mov edx, dword [ebp - 0x184]
mov eax, dword [ebp - 0x30]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f3a8
mov eax, dword [ebp - 0x28]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f44c
inc edi
xor esi, esi
lea ecx, [ebp - 0x18c]
mov eax, dword [ebp - 0x28]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x18c]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f427
mov eax, dword [ebp - 0x20]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f47f
inc edi
xor esi, esi
lea ecx, [ebp - 0x190]
mov eax, dword [ebp - 0x20]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x190]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f45a
mov eax, dword [ebp - 0x24]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f4b2
inc edi
xor esi, esi
lea ecx, [ebp - 0x194]
mov eax, dword [ebp - 0x24]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x194]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f48d
mov eax, dword [ebp - 0x2c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f4e5
inc edi
xor esi, esi
lea ecx, [ebp - 0x198]
mov eax, dword [ebp - 0x2c]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x198]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f4c0
mov eax, dword [ebp - 0x30]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f518
inc edi
xor esi, esi
lea ecx, [ebp - 0x19c]
mov eax, dword [ebp - 0x30]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x19c]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f4f3
mov ax, word [0x40fe6c]
call fcn.00406d8c
test al, al
jne 0x40f567
mov ax, word [0x40fe70]
call fcn.00406d8c
test al, al
jne 0x40f567
mov ax, word [0x40fe74]
call fcn.00406d8c
test al, al
jne 0x40f567
mov ax, word [0x40fe78]
call fcn.00406d8c
test al, al
jne 0x40f567
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40f65f
mov eax, dword [ebp - 0x20]
call fcn.0040a04c
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f62c
inc edi
xor esi, esi
lea eax, [ebp - 4]
push eax
lea ecx, [ebp - 0x1a0]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x1a0]
mov ecx, 4
mov edx, 5
call fcn.00403778
mov eax, dword [ebp - 4]
mov edx, 0x4102b0
call fcn.0040366c
je 0x40f624
mov eax, dword [ebp - 4]
mov edx, 0x41026c
call fcn.0040366c
je 0x40f624
mov eax, dword [ebp - 4]
mov edx, 0x41025c
call fcn.0040366c
je 0x40f624
mov eax, dword [ebp - 4]
mov edx, 0x410290
call fcn.0040366c
je 0x40f624
mov eax, dword [ebp - 4]
mov edx, 0x4102a0
call fcn.0040366c
je 0x40f624
lea ecx, [ebp - 0x1a8]
mov eax, dword [ebp - 0x1c]
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x1a8]
lea edx, [ebp - 0x1a4]
call fcn.00407e64
mov edx, dword [ebp - 0x1a4]
mov eax, dword [ebp - 0x20]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f581
mov eax, dword [ebp - 0x20]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f65f
inc edi
xor esi, esi
lea ecx, [ebp - 0x1ac]
mov eax, dword [ebp - 0x20]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x1ac]
mov eax, dword [ebx + 0xe0]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f63a
mov eax, dword [ebp - 0x1c]
call fcn.0040766c
mov eax, dword [ebp - 0x20]
call fcn.0040766c
mov eax, dword [ebp - 0x24]
call fcn.0040766c
mov eax, dword [ebp - 0x28]
call fcn.0040766c
mov eax, dword [ebp - 0x2c]
call fcn.0040766c
mov eax, dword [ebp - 0x30]
call fcn.0040766c
mov eax, dword [ebx + 0xdc]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f70f
inc edi
xor esi, esi
mov eax, dword [ebx + 0xe0]
mov eax, dword [eax + 0x1c]
dec eax
test eax, eax
jl 0x40f70b
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x1b0]
mov eax, dword [ebx + 0xe0]
mov edx, dword [ebp - 0x14]
call fcn.0040a0a8
mov eax, dword [ebp - 0x1b0]
push eax
lea ecx, [ebp - 0x1b4]
mov eax, dword [ebx + 0xdc]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x1b4]
pop eax
call fcn.0040366c
jne 0x40f703
mov eax, dword [ebx + 0xe0]
mov edx, dword [ebp - 0x14]
call fcn.0040a07c
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x40f6b9
inc esi
dec edi
jne 0x40f6a0
xor esi, esi
jmp 0x40f7de
lea eax, [ebp - 0x1b8]
push eax
lea ecx, [ebp - 0x1bc]
mov eax, edi
mov edx, esi
call fcn.0040a0a8
mov eax, dword [ebp - 0x1bc]
mov ecx, 1
mov edx, 1
call fcn.00403778
mov eax, dword [ebp - 0x1b8]
mov edx, 0x4102c0
call fcn.0040366c
je 0x40f7dd
lea ecx, [ebp - 0x1c4]
mov eax, dword [ebx + 0xe0]
mov edx, esi
call fcn.0040a0a8
mov ecx, dword [ebp - 0x1c4]
lea eax, [ebp - 0x1c0]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x1c0]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 4]
mov edx, 0x4102cc
call fcn.00404c04
cmp dword [ebp - 4], 0
je 0x40f7cb
lea eax, [ebp - 0x1c8]
call fcn.00404a5c
lea eax, [ebp - 0x1c8]
mov edx, dword [ebp - 4]
call fcn.00403528
mov eax, dword [ebp - 0x1c8]
call fcn.00407f9c
test al, al
jne 0x40f7da
mov eax, dword [ebx + 0xe0]
mov edx, esi
call fcn.0040a07c
jmp 0x40f7de
inc esi
jmp 0x40f7de
inc esi
mov edi, dword [ebx + 0xe0]
cmp esi, dword [edi + 0x1c]
jl 0x40f716
mov eax, dword [ebx + 0xe0]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f9b2
inc edi
xor esi, esi
lea ecx, [ebp - 0x1d0]
mov eax, dword [ebx + 0xe0]
mov edx, esi
call fcn.0040a0a8
mov ecx, dword [ebp - 0x1d0]
lea eax, [ebp - 0x1cc]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x1cc]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 4]
mov edx, 0x40fee4
call fcn.00404c04
cmp dword [ebp - 4], 0
je 0x40f8b5
lea eax, [ebp - 0x1d4]
call fcn.00404a5c
lea eax, [ebp - 0x1d4]
mov edx, dword [ebp - 4]
call fcn.00403528
mov eax, dword [ebp - 0x1d4]
call fcn.00407f9c
test al, al
je 0x40f8b5
lea eax, [ebp - 0x1dc]
call fcn.00404a5c
lea eax, [ebp - 0x1dc]
mov edx, dword [ebp - 4]
call fcn.00403528
mov edx, dword [ebp - 0x1dc]
lea ecx, [ebp - 0x1d8]
mov eax, ebx
call fcn.004143ec
mov edx, dword [ebp - 0x1d8]
mov eax, dword [ebx + 0xf0]
call fcn.0040a03c
jmp 0x40f90f
lea ecx, [ebp - 0x1e8]
mov eax, dword [ebx + 0xe0]
mov edx, esi
call fcn.0040a0a8
mov ecx, dword [ebp - 0x1e8]
lea eax, [ebp - 0x1e4]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x1e4]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 0x1e0]
mov edx, 0x40fef8
call fcn.00404c04
mov edx, dword [ebp - 0x1e0]
mov eax, dword [ebx + 0xf0]
call fcn.0040a03c
lea ecx, [ebp - 0x1f0]
mov eax, dword [ebx + 0xe0]
mov edx, esi
call fcn.0040a0a8
mov ecx, dword [ebp - 0x1f0]
lea eax, [ebp - 0x1ec]
mov edx, 0x40fea8
call fcn.0040356c
mov edx, dword [ebp - 0x1ec]
mov eax, 0x80000002
call fcn.00404ad4
lea ecx, [ebp - 4]
mov edx, 0x40ff0c
call fcn.00404c04
cmp dword [ebp - 4], 0
je 0x40f97e
lea ecx, [ebp - 0x1f4]
mov eax, ebx
mov edx, dword [ebp - 4]
call fcn.004146b0
mov edx, dword [ebp - 0x1f4]
mov eax, dword [ebx + 0xf4]
call fcn.0040a03c
jmp 0x40f9aa
lea ecx, [ebp - 0x1f8]
mov eax, dword [ebx + 0xf0]
mov edx, dword [eax + 0x1c]
dec edx
mov eax, dword [ebx + 0xf0]
call fcn.0040a0a8
mov edx, dword [ebp - 0x1f8]
mov eax, dword [ebx + 0xf4]
call fcn.0040a03c
inc esi
dec edi
jne 0x40f802
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
je 0x40f9f4
mov eax, dword [ebx + 0xf0]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40f9f4
inc edi
xor esi, esi
lea ecx, [ebp - 0x1fc]
mov eax, dword [ebx + 0xf0]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x1fc]
mov eax, dword [ebx + 0x3c]
call fcn.00409c68
inc esi
dec edi
jne 0x40f9cf
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
test al, al
je 0x40fa36
mov eax, dword [ebx + 0xf4]
mov edi, dword [eax + 0x1c]
dec edi
test edi, edi
jl 0x40fa36
inc edi
xor esi, esi
lea ecx, [ebp - 0x200]
mov eax, dword [ebx + 0xf4]
mov edx, esi
call fcn.0040a0a8
mov edx, dword [ebp - 0x200]
mov eax, dword [ebx + 0x3c]
call fcn.00409c68
inc esi
dec edi
jne 0x40fa11
mov eax, 0x80000002
call fcn.00404ce0
mov edx, 0x4102e0
mov eax, 0x80000001
call fcn.00404ad4
mov edx, 0x4102f8
call fcn.00404b74
test eax, eax
jne 0x40fa6c
mov eax, dword [ebx + 0x9c]
xor edx, edx
call fcn.00409f40
jmp 0x40fa7c
mov eax, dword [ebx + 0x9c]
mov edx, 1
call fcn.00409f40
mov edx, 0x41030c
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x204]
mov edx, 0x410330
call fcn.00404c04
mov eax, dword [ebp - 0x204]
mov edx, 0x40ffdc
call fcn.0040366c
jne 0x40fabc
mov eax, dword [ebx + 0xa0]
mov dl, 1
call fcn.00409a8c
jmp 0x40fac9
mov eax, dword [ebx + 0xa0]
xor edx, edx
call fcn.00409a8c
mov edx, 0x410344
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 8]
mov edx, 0x410364
call fcn.00404c04
mov edx, 0x410344
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0xc]
mov edx, 0x410374
call fcn.00404c04
mov edx, 0x410344
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 0x10]
mov edx, 0x41038c
call fcn.00404c04
mov eax, dword [ebp - 8]
mov edx, 0x40ffdc
call fcn.0040366c
je 0x40fb3b
mov eax, dword [ebp - 0xc]
mov edx, 0x40ffdc
call fcn.0040366c
jne 0x40fb52
mov eax, dword [ebx + 0x78]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x7c]
mov edx, 1
call fcn.00409f40
mov eax, dword [ebp - 8]
mov edx, 0x4103a4
call fcn.0040366c
je 0x40fb70
mov eax, dword [ebp - 0xc]
mov edx, 0x4103a4
call fcn.0040366c
jne 0x40fb84
mov eax, dword [ebx + 0x78]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x7c]
xor edx, edx
call fcn.00409f40
mov eax, dword [ebp - 8]
mov edx, 0x4103b0
call fcn.0040366c
je 0x40fba2
mov eax, dword [ebp - 0xc]
mov edx, 0x4103b0
call fcn.0040366c
jne 0x40fbb6
mov eax, dword [ebx + 0x78]
xor edx, edx
call fcn.00409a8c
mov eax, dword [ebx + 0x7c]
xor edx, edx
call fcn.00408c48
mov eax, dword [ebp - 0x10]
mov edx, 0x40ffdc
call fcn.0040366c
jne 0x40fbe2
mov eax, dword [ebx + 0x80]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x84]
mov edx, 1
call fcn.00409f40
mov eax, dword [ebp - 0x10]
mov edx, 0x4103a4
call fcn.0040366c
jne 0x40fc0b
mov eax, dword [ebx + 0x80]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x84]
xor edx, edx
call fcn.00409f40
mov eax, dword [ebp - 0x10]
mov edx, 0x4103b0
call fcn.0040366c
jne 0x40fc44
mov eax, dword [ebx + 0x80]
xor edx, edx
call fcn.00409a8c
mov eax, dword [ebx + 0x84]
mov edx, 1
call fcn.00409f40
mov eax, dword [ebx + 0x84]
xor edx, edx
call fcn.00408c48
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
mov edx, eax
mov eax, dword [ebx + 0x80]
call fcn.00408c48
mov eax, dword [ebx + 0x6c]
call fcn.00409a6c
mov edx, eax
mov eax, dword [ebx + 0x84]
call fcn.00408c48
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
test al, al
je 0x40fd44
mov ax, word [0x40ff20]
call fcn.00406d8c
test al, al
jne 0x40fcab
mov ax, word [0x40ff24]
call fcn.00406d8c
test al, al
jne 0x40fcab
mov ax, word [0x40ff28]
call fcn.00406d8c
test al, al
je 0x40fd03
mov edx, 0x410344
mov eax, 0x80000001
call fcn.00404ad4
lea ecx, [ebp - 8]
xor edx, edx
call fcn.00404c04
mov eax, dword [ebx + 0x78]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebp - 8]
mov edx, 0x4103a4
call fcn.0040366c
jne 0x40fce7
mov eax, dword [ebx + 0x7c]
xor edx, edx
call fcn.00409f40
mov eax, dword [ebp - 8]
mov edx, 0x40ffdc
call fcn.0040366c
jne 0x40fd03
mov eax, dword [ebx + 0x7c]
mov edx, 1
call fcn.00409f40
mov eax, dword [ebx + 0x104]
sub eax, 0x404
je 0x40fd26
sub eax, 0x400
jne 0x40fd35
mov eax, dword [ebx + 0x78]
mov edx, 0x4103bc
call fcn.004092dc
jmp 0x40fd83
mov eax, dword [ebx + 0x78]
mov edx, 0x4103d0
call fcn.004092dc
jmp 0x40fd83
mov eax, dword [ebx + 0x78]
mov edx, 0x4103e4
call fcn.004092dc
jmp 0x40fd83
mov eax, dword [ebx + 0x104]
sub eax, 0x404
je 0x40fd67
sub eax, 0x400
jne 0x40fd76
mov eax, dword [ebx + 0x78]
mov edx, 0x4103f8
call fcn.004092dc
jmp 0x40fd83
mov eax, dword [ebx + 0x78]
mov edx, 0x410410
call fcn.004092dc
jmp 0x40fd83
mov eax, dword [ebx + 0x78]
mov edx, 0x410428
call fcn.004092dc
mov eax, 0x80000001
call fcn.00404ce0
mov eax, dword [ebx + 0x3c]
xor edx, edx
call fcn.00409f40
mov eax, dword [ebx + 0x54]
xor edx, edx
call fcn.004073c0
lea eax, [ebx + 0x110]
push eax
push 0x1e
call sub.user32.dll_GetKeyboardLayoutList
mov eax, ebx
call fcn.004137dc
mov ax, word [0x40fe7c]
call fcn.00406d8c
test al, al
je 0x40fdd9
mov eax, dword [ebx + 0x6c]
mov dl, 1
call fcn.00409a8c
mov eax, dword [ebx + 0x70]
xor edx, edx
call fcn.00408c48
mov eax, dword [ebx + 0x70]
call fcn.00409a6c
mov byte [ebx + 0x18c], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40fe36
lea eax, [ebp - 0x204]
mov edx, 0x63
call fcn.004033c0
lea eax, [ebp - 0x74]
call fcn.0040339c
lea eax, [ebp - 0x78]
call fcn.0040339c
lea eax, [ebp - 0x70]
mov edx, 0xe
call fcn.004033c0
lea eax, [ebp - 0x10]
mov edx, 4
call fcn.004033c0
ret