Function at 0x43b150
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b6a35
mov eax, dword fs:[0]
push eax
mov eax, 0x8110
mov dword fs:[0], esp
call fcn.004b57a0
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 0x14], ebx
cmp dword [ebx + 0x44], 0
jne 0x43b18a
cmp dword [ebx + 0x58], 0
mov byte [ebp - 0x36], 0
je 0x43b18e
mov byte [ebp - 0x36], 1
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0x1000
mov dword [ebp - 0x1c], 3
mov dword [ebp - 4], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0x1000
mov dword [ebp - 0x54], 3
mov eax, dword [ebp + 0xc]
mov byte [ebp - 4], 1
push 0x2000
push 0
mov dword [ebx + 0x27c], eax
mov dword [ebp - 0x50], 0
call fcn.0049efb8
add esp, 8
test eax, eax
je 0x43c6b4
mov esi, dword [ebp - 0x5c]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], 0x1000
test esi, esi
je 0x43b21b
add esi, esi
jmp 0x43b21e
mov esi, dword [ebp - 0x58]
lea eax, [esi + esi]
push eax
push dword [ebp - 0x64]
call fcn.0049efb8
add esp, 8
test eax, eax
je 0x43c6b4
mov dword [ebp - 0x64], eax
xor ecx, ecx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x5c], esi
mov word [eax], cx
cmp dword [ebp - 0x28], 0xffffffff
je 0x43bf6e
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x44], eax
mov al, byte [ebp - 0xf]
mov byte [ebp - 0xd], al
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x68], eax
nop
mov eax, dword [ebp - 0x50]
mov ecx, ebx
mov dword [ebx + 0x280], eax
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x50]
mov dword [ebx + 0x644], 0
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp + 8]
call fcn.0043d0a0
test eax, eax
je 0x43c675
cmp dword [ebp - 0x28], 0
je 0x43bf47
nop
mov eax, dword [ebp - 0x2c]
xor esi, esi
xor ebx, ebx
cmp word [eax], 0x3a
jne 0x43b3b1
movzx edx, word [eax + 2]
test dx, dx
je 0x43b3b1
lea edi, [eax + 2]
mov dword [ebp - 0x44], edi
cmp edx, 0x3a
je 0x43b2e7
push 0x3a
push edi
call fcn.0049ca21
mov esi, eax
add esp, 8
mov eax, dword [ebp - 0x2c]
lea ecx, [esi + 2]
neg esi
sbb esi, esi
and esi, ecx
mov dword [ebp - 0x34], esi
jmp 0x43b2f9
cmp word [eax + 4], bx
lea ecx, [eax + 4]
je 0x43b3b1
mov esi, ecx
mov dword [ebp - 0x34], ecx
test esi, esi
je 0x43b3b1
mov al, byte [0x4e8da0]
mov byte [ebp - 0xd], al
cmp edi, esi
jae 0x43b345
nop dword [eax]
movzx eax, word [edi]
add edi, 2
mov edx, eax
mov esi, eax
and eax, 0xffdf
add edx, 0xffffff9f
movzx ecx, ax
cmp dx, 0x19
mov eax, esi
mov esi, dword [ebp - 0x34]
cmova ecx, eax
cmp cx, 0x58
je 0x43b33d
cmp edi, esi
jb 0x43b310
jmp 0x43b345
cmp word [edi], 0x30
setne byte [ebp - 0xd]
movzx eax, word [esi]
mov edx, eax
test ax, ax
je 0x43b373
mov ecx, eax
movzx edx, cx
cmp cx, 0x60
je 0x43b378
movzx edx, cx
cmp cx, 0x3a
je 0x43b373
movzx eax, word [esi + 2]
add esi, 2
mov ecx, eax
mov edx, eax
test ax, ax
jne 0x43b351
test dx, dx
je 0x43b3a4
lea edi, [esi + 2]
cmp dx, 0x3a
jne 0x43b418
test ebx, ebx
jne 0x43b494
cmp word [edi], dx
jne 0x43b494
cmp byte [ebp - 0xd], 0
mov ebx, esi
mov esi, edi
je 0x43b494
test ebx, ebx
jne 0x43b4ce
mov eax, dword [ebp - 0x2c]
xor esi, esi
push 0x4d7020
push eax
mov dword [ebp - 0x34], esi
call fcn.0049d40e
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x43b4d7
mov ecx, dword [ebp - 0x2c]
cmp ebx, ecx
jne 0x43b3dd
cmp word [ebx + 4], 0x3a
jne 0x43b3dd
add ebx, 2
mov esi, ebx
cmp ebx, ecx
jbe 0x43b3f7
movzx eax, word [esi]
cmp eax, 0x20
je 0x43b3f0
cmp eax, 9
jne 0x43b3f7
sub esi, 2
cmp esi, ecx
ja 0x43b3e3
movzx edi, word [esi]
xor eax, eax
mov word [esi], ax
mov ecx, dword [ebp - 0x2c]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x43b413
cmp eax, 9
jne 0x43b49c
add ecx, 2
jmp 0x43b402
movzx eax, word [edi]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x43b42a.99
movzx eax, byte [eax + 0x43c71c]
jmp dword [eax*4 + 0x43c6f8]
mov eax, 7
jmp 0x43b467
mov eax, 8
jmp 0x43b467
mov eax, 0xc
jmp 0x43b467
mov eax, 0xa
jmp 0x43b467
mov eax, 0xd
jmp 0x43b467
mov eax, 9
jmp 0x43b467
mov eax, 0xb
jmp 0x43b467
mov eax, 0x20
mov word [edi], ax
mov ecx, edi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x43b470
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edi
push esi
call fcn.0049cad0
add esp, 0xc
dec dword [ebp - 0x28]
add esi, 2
jmp 0x43b345
push 0
xor edx, edx
call fcn.00415580
add esp, 4
mov dword [ebp - 0x68], eax
test eax, eax
je 0x43c675
xor ecx, ecx
mov word [esi], di
cmp eax, 4
cmove ebx, ecx
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x44], ecx
mov cl, byte [ebp - 0xd]
mov byte [ebp - 0xd], cl
test ebx, ebx
je 0x43b4d7
cmp ebx, dword [ebp - 0x2c]
ja 0x43b6fa
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x14]
cmp word [ecx + eax*2 - 2], 0x3a
jne 0x43b537
cmp dword [ebx + 0x58], 0
je 0x43b4f9
mov eax, dword [0x4e47f8]
cmp dword [eax + 0x18], 0
je 0x43b537
mov esi, dword [ebp - 0x2c]
nop dword [eax]
movzx eax, word [esi]
cmp eax, 0x7f
ja 0x43b51b
push eax
call fcn.004a31c0
add esp, 4
test eax, eax
jne 0x43b51b
cmp word [esi], 0x5f
jne 0x43b520
add esi, 2
jmp 0x43b500
mov edi, dword [ebp - 0x2c]
mov eax, esi
sub eax, edi
sar eax, 1
inc eax
cmp eax, dword [ebp - 0x28]
jne 0x43b537
cmp esi, edi
ja 0x43c073
mov edi, dword [ebp - 0x2c]
cmp word [edi], 0x23
jne 0x43b5a9
push 6
push 0x4d2d18
push edi
call fcn.0049f012
add esp, 0xc
test eax, eax
jne 0x43b587
mov eax, dword [ebp - 0x2c]
movzx ecx, word [eax + 0xc]
cmp ecx, 0x20
je 0x43b565
cmp ecx, 9
jne 0x43b58a
lea eax, [ebp - 0x6c]
mov ecx, ebx
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp + 8]
call fcn.0043c910
test eax, eax
je 0x43c675
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebx + 0x280]
mov ecx, ebx
push eax
call fcn.0043db60
test eax, eax
je 0x43c675
cmp eax, 3
je 0x43c1e0
mov eax, dword [ebp - 0x2c]
movzx ecx, word [eax]
cmp ecx, 0x7b
je 0x43b5bd
cmp ecx, 0x7d
jne 0x43c1f4
mov edx, dword [ebx + 0x58]
test edx, edx
je 0x43b67e
mov eax, dword [0x4e47f8]
cmp dword [eax + 0x18], 0
jne 0x43b67e
cmp ecx, 0x7b
je 0x43c622
cmp dword [ebx + 0x274], 0
je 0x43b619
mov eax, dword [ebx + 0x278]
mov dword [ebx + 0x274], 0
test eax, eax
je 0x43b6a1
push eax
call fcn.0049ef92
add esp, 4
mov dword [ebx + 0x278], 0
jmp 0x43b6a1
lea eax, [edx - 1]
mov dword [ebx + 0x58], eax
mov edi, dword [ebx + eax*4 + 0x5c]
lea eax, [ebp - 0x30]
push eax
push 0x4d8030
mov ecx, edi
call fcn.00479120
test eax, eax
je 0x43b641
cmp dword [eax + 8], 5
jne 0x43b641
mov esi, dword [eax]
jmp 0x43b643
xor esi, esi
mov ecx, edi
call fcn.00475b60
mov ecx, esi
call fcn.00475b60
mov eax, dword [ebx + 0x58]
mov eax, dword [ebx + eax*4 + 0x5c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea esi, [ebx + 0x70]
push 0x2e
push esi
call fcn.0049c97e
add esp, 8
test eax, eax
je 0x43b677
xor ecx, ecx
mov word [eax], cx
jmp 0x43b6a1
xor eax, eax
mov word [esi], ax
jmp 0x43b6a1
push 0
cmp ecx, 0x7b
mov ecx, ebx
push 0
setne al
push 0
add al, 3
push 0
movzx eax, al
push eax
call fcn.00440080
test eax, eax
je 0x43c675
mov ecx, dword [ebp - 0x2c]
movzx eax, word [ecx + 2]
add ecx, 2
cmp eax, 0x20
je 0x43b6a4
cmp eax, 9
je 0x43b6a4
test ax, ax
je 0x43bf47
mov edi, dword [ebp - 0x2c]
mov eax, ecx
mov edx, dword [ebp - 0x28]
sub eax, edi
sar eax, 1
sub edx, eax
mov dword [ebp - 0x28], edx
lea eax, [edx*2 + 2]
push eax
push ecx
push edi
call fcn.0049cad0
add esp, 0xc
mov dword [ebx + 0x644], 0
cmp dword [ebp - 0x28], 0
jne 0x43b2a0
jmp 0x43bf47
mov eax, dword [0x4e47f8]
mov esi, dword [ebp - 0x14]
mov eax, dword [eax + 0x18]
test eax, eax
je 0x43b712
cmp eax, dword [esi + 0x1c]
jne 0x43c5c9
cmp dword [esi + 0x58], 0
jne 0x43c5c9
xor eax, eax
mov word [ebx], ax
add ebx, 4
mov dword [ebp - 0x3c], ebx
mov ecx, ebx
nop dword [eax]
movzx eax, word [ecx]
cmp eax, 0x20
je 0x43b73d
cmp eax, 9
jne 0x43b742
add ecx, 2
jmp 0x43b730
cmp eax, 0x7b
jne 0x43b753
cmp word [ecx + 2], 0
jne 0x43b753
lea edx, [eax - 0x7a]
jmp 0x43b755
xor dl, dl
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x30], edx
test edi, edi
je 0x43b769
cmp byte [ebp - 0xd], 0
je 0x43be58
mov dword [ebp - 0x3c], ecx
test edi, edi
jne 0x43be58
cmp word [ecx], 0x60
mov ebx, ecx
mov dword [ebp - 0x3c], ecx
jne 0x43b78d
cmp word [ecx + 2], 0x7b
lea eax, [ecx + 2]
cmove ebx, eax
mov dword [ebp - 0x3c], ebx
mov edi, ebx
test dl, dl
jne 0x43bc5c
cmp word [ebx], 0
je 0x43bc5c
movzx eax, word [ebx + 2]
mov ecx, eax
test ax, ax
je 0x43b800
nop dword [eax]
cmp ax, 0x20
je case.0x43b7c8.34
movzx eax, word [edi]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x43b7c8.34
movzx eax, byte [eax + 0x43c73c]
jmp dword [eax*4 + 0x43c734]
movzx eax, word [edi + 4]
add edi, 2
test ax, ax
jne 0x43b7b0
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push ecx
push 0
xor edx, edx
mov ecx, edi
call fcn.0041cb70
add esp, 0xc
mov byte [ebp - 0xe], al
test al, al
je 0x43bc64
jmp 0x43b804
mov byte [ebp - 0xe], 0xff
mov esi, dword [ebp - 0x2c]
cmp word [esi], 0
je case.0x43b830.34
movzx eax, word [esi + 2]
mov ecx, eax
test ax, ax
je case.0x43b830.34
cmp ax, 0x20
je case.0x43b830.34
movzx eax, word [esi]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x43b830.34
movzx eax, byte [eax + 0x43c7a4]
jmp dword [eax*4 + 0x43c79c]
movzx eax, word [esi + 4]
add esi, 2
test ax, ax
jne 0x43b818
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push ecx
push 0
xor edx, edx
mov ecx, esi
call fcn.0041cb70
add esp, 0xc
mov byte [ebp - 0xf], al
push 0x4d411c
push esi
call fcn.0049d40e
mov ebx, eax
add esp, 8
mov al, byte [ebp - 0xf]
lea ecx, [eax - 1]
cmp cl, 5
ja 0x43b87d
cmp al, 3
jne 0x43b883
add al, 0x66
cmp al, 5
ja 0x43b887
mov cl, 1
jmp 0x43b889
xor cl, cl
mov dl, byte [ebp - 0xe]
mov al, dl
dec al
cmp al, 5
ja 0x43b899
cmp dl, 3
jne 0x43b8a1
mov al, dl
add al, 0x66
cmp al, 5
ja 0x43b8a5
mov al, 1
jmp 0x43b8a7
xor al, al
mov byte [ebp - 0x15], al
test cl, cl
jne 0x43b8b6
mov byte [ebp - 0x35], 1
test al, al
jne 0x43b8ba
mov byte [ebp - 0x35], 0
mov ecx, esi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x43b8c0
sub ecx, edx
sar ecx, 1
cmp ecx, 1
jne 0x43b8e7
movzx eax, word [esi]
push eax
call dword [sym.imp.USER32.dll_IsCharUpperW]
test eax, eax
mov eax, 0x4d70a8
jne 0x43b8ec
mov eax, 0x4ceea8
push dword [ebp - 0x2c]
test ebx, ebx
mov ecx, 0x4d2abc
push eax
mov eax, 0x4ceea8
cmove eax, ecx
push eax
push 0x4d58f8
lea eax, [ebp - 0x110]
push 0x20
push eax
call fcn.00481800
movzx eax, word [edi]
add esp, 0x18
cmp eax, 0x22
je 0x43b940
cmp eax, 0x60
je 0x43b940
push 0x1f
lea eax, [ebp - 0xd0]
push edi
push eax
call fcn.004aa484
add esp, 0xc
xor eax, eax
mov word [ebp - 0x92], ax
jmp 0x43b95c
mov word [ebp - 0xce], ax
mov ecx, 0x60
xor eax, eax
mov word [ebp - 0xd0], cx
mov word [ebp - 0xcc], ax
mov ebx, dword [ebp - 0x3c]
lea eax, [ebp - 0x80]
push 7
push ebx
push eax
call fcn.004aa484
sub edi, ebx
xor eax, eax
sar edi, 1
add esp, 0xc
mov word [ebp - 0x72], ax
cmp edi, 8
jae 0x43b982
mov word [ebp + edi*2 - 0x80], ax
cmp word [ebp - 0x80], 0
jne 0x43b9ab
cmp byte [ebp - 0xe], 0x13
jne 0x43b9ab
lea eax, [ebp - 0xd0]
push 0x4d01f0
push eax
call fcn.0049ee91
add esp, 8
test eax, eax
je 0x43bc64
mov ebx, dword [ebp - 0x14]
mov ecx, ebx
cmp dword [ebx + 0x1c], 0
jne 0x43beda
call fcn.0044f3d0
test eax, eax
je 0x43c675
lea eax, [ebp - 0x16]
push eax
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x110]
call fcn.00415e00
mov ecx, dword [ebx + 0x1c]
add esp, 4
push dword [ebp - 0x40]
test eax, eax
je 0x43b9f0
push ecx
mov ecx, eax
call fcn.00415490
jmp 0x43ba01
lea eax, [ebp - 0x110]
xor edx, edx
push eax
call fcn.00414b70
add esp, 8
test eax, eax
je 0x43c675
cmp byte [ebp - 0x15], 0
mov ecx, 0x4d0484
mov eax, 0x4d049c
cmove eax, ecx
push eax
lea eax, [ebp - 0x8118]
push 0x4d7114
push eax
call fcn.00406520
add esp, 0xc
lea ebx, [ebp - 0x8118]
cmp byte [ebp - 0x35], 0
lea ebx, [ebx + eax*2]
je 0x43ba56
lea eax, [ebp - 0xd0]
push eax
push 0x4d7124
push ebx
call fcn.00406520
add esp, 0xc
lea ebx, [ebx + eax*2]
mov eax, dword [ebp - 0x44]
lea edi, [ebp - 0x8c]
mov dword [ebp - 0x44], eax
mov esi, 0x4d7150
mov al, byte [ebp - 0xd]
mov ecx, 0x21
mov byte [ebp - 0xd], al
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x68], eax
push ecx
lea eax, [ebp - 0x110]
push eax
call fcn.0049ca21
add esp, 8
test eax, eax
je 0x43bab0
cmp word [eax + 2], 0
je 0x43bab0
movzx eax, word [esi]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.0049ca21
add esp, 8
test eax, eax
jne 0x43bab0
mov ax, word [esi]
mov word [edi], ax
add edi, 2
movzx eax, word [esi + 2]
add esi, 2
mov ecx, eax
test ax, ax
jne 0x43ba78
xor eax, eax
mov ecx, 0x4ceea8
mov word [edi], ax
movzx eax, byte [ebp - 0xe]
sub eax, 0x12
je 0x43badd
sub eax, 0x92
je 0x43badd
sub eax, 1
jne 0x43bafe
movzx eax, byte [ebp - 0xf]
sub eax, 0x11
je 0x43baf9
sub eax, 0x91
je 0x43baf9
sub eax, 1
jne 0x43bafe
mov ecx, 0x4d7174
jmp 0x43bafe
mov ecx, 0x4d715c
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0x80]
push eax
push ecx
lea eax, [ebp - 0x8c]
push eax
push 0x4d7190
push ebx
call fcn.00406520
mov ebx, dword [ebp - 0x14]
add esp, 0x18
mov ecx, ebx
push 0
push 0
push 0
push 0
push 3
call fcn.00440080
test eax, eax
je 0x43c675
push 0
push 0
push 0
lea eax, [ebp - 0x8118]
mov ecx, ebx
push eax
call fcn.0043ebb0
test eax, eax
je 0x43c675
push 0
push 0
push 0
push 0
push 4
mov ecx, ebx
call fcn.00440080
test eax, eax
je 0x43c675
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x8118]
push 0x4d71d0
push eax
call fcn.00406520
add esp, 0xc
mov ecx, ebx
call fcn.0044f3d0
test eax, eax
je 0x43c675
lea eax, [ebp - 0x16]
push eax
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x8118]
call fcn.00415e00
mov ecx, dword [ebx + 0x1c]
add esp, 4
push dword [ebp - 0x40]
test eax, eax
je 0x43bbc3
push ecx
mov ecx, eax
call fcn.00415490
jmp 0x43bbd4
lea eax, [ebp - 0x8118]
xor edx, edx
push eax
call fcn.00414b70
add esp, 8
test eax, eax
je 0x43c675
cmp byte [ebp - 0x15], 0
lea eax, [ebp - 0xd0]
push eax
mov ecx, 0x4d0484
mov eax, 0x4d049c
cmove eax, ecx
push eax
lea eax, [ebp - 0x8118]
push 0x4d71dc
push eax
call fcn.00406520
add esp, 0x10
mov ecx, ebx
push 0
push 0
push 0
push 0
push 3
call fcn.00440080
test eax, eax
je 0x43c675
push 0
push 0
push 0
lea eax, [ebp - 0x8118]
mov ecx, ebx
push eax
call fcn.0043ebb0
test eax, eax
je 0x43c675
push 0
push 0
push 0
push 0
push 4
mov ecx, ebx
call fcn.00440080
test eax, eax
je 0x43c675
jmp 0x43bf47
test ebx, ebx
je 0x43bcf2
cmp word [ebx], 0
je 0x43bcf2
push 0x4d5af8
push ebx
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x43bc87
mov edi, 0x7ffe
jmp 0x43bcf4
push 0x4d5b08
push ebx
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x43bca0
mov edi, 0x7ffd
jmp 0x43bcf4
push 0x4d5b20
push ebx
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x43bcb9
mov edi, 0x7ffc
jmp 0x43bcf4
push 0x4d5b38
push ebx
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x43bcd2
mov edi, 0x7ffb
jmp 0x43bcf4
push 0x4d5b54
push ebx
call fcn.0049ee91
add esp, 8
neg eax
sbb edi, edi
and edi, 0xffff8006
add edi, 0x7ffa
jmp 0x43bcf4
xor edi, edi
mov ecx, dword [ebp - 0x2c]
lea eax, [ebp - 0x16]
push eax
lea edx, [ebp - 0x40]
mov dword [ebp - 0x4c], edi
call fcn.00415e00
mov esi, eax
add esp, 4
test esi, esi
je 0x43bdbc
test di, di
je 0x43bd54
mov word [esi + 6], di
mov edi, dword [ebp - 0x34]
cmp word [ebx], 0
je 0x43bf44
cmp byte [ebp - 0x30], 0
je 0x43bf9c
mov ebx, dword [ebp - 0x14]
mov ecx, ebx
push 0
push 0
push 0
push 0
push 3
call fcn.00440080
test eax, eax
je 0x43c675
jmp 0x43bf47
mov ecx, dword [esi + 0x20]
test ecx, ecx
je 0x43bd73
mov eax, dword [0x4e47f8]
mov eax, dword [eax + 0x58]
cmp dword [ecx + 8], eax
je 0x43c596
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x43bd63
mov edi, dword [ebp - 0x14]
cmp dword [edi + 0x1c], 0
jne 0x43bd8b
mov ecx, edi
call fcn.0044f3d0
test eax, eax
je 0x43c675
push dword [ebp - 0x40]
mov ecx, esi
push dword [edi + 0x1c]
call fcn.00415490
test eax, eax
je 0x43c5b0
cmp byte [ebp - 0x16], 0
jne 0x43bdb3
cmp byte [0x4e8cdf], 0
je 0x43bd1c
mov byte [esi + 0x14], 1
jmp 0x43bd1c
mov esi, dword [ebp - 0x14]
mov eax, dword [esi + 0x1c]
test di, di
je 0x43bddc
test eax, eax
je 0x43bdef
push 0x4ceea8
push 0x4d70b0
mov ecx, esi
jmp 0x43c6c0
test eax, eax
jne 0x43bdef
mov ecx, esi
call fcn.0044f3d0
test eax, eax
je 0x43c675
push dword [ebp - 0x40]
mov ecx, dword [esi + 0x1c]
mov edx, edi
push dword [ebp - 0x2c]
call fcn.00414b70
add esp, 8
test eax, eax
jne 0x43bd1c
cmp dword [ebp - 0x68], 3
jne 0x43c675
cmp byte [esi + 0x6dc], al
jne 0x43bd1c
push dword [ebp - 0x2c]
lea eax, [ebp - 0x218]
push 0x4d72a0
push 0x80
push eax
call fcn.00481800
push 0
push 0
xorps xmm3, xmm3
lea ecx, [ebp - 0x218]
mov edx, 0x10000
call fcn.00486cb0
add esp, 0x18
jmp 0x43bd1c
cmp word [edi], 0
je 0x43c5ba
test dl, dl
je 0x43beb7
cmp byte [0x4e8da5], 0
mov esi, dword [ebp - 0x44]
setne bl
cmp esi, edi
jae 0x43bea7
movzx eax, word [esi]
mov ecx, eax
add eax, 0xffffff9f
mov edx, ecx
and edx, 0xffffffdf
cmp ax, 0x19
cmova edx, ecx
sub edx, 0x52
je 0x43be95
sub edx, 2
jne 0x43be9d
cmp word [esi + 2], 0x30
setne bl
add esi, 2
cmp esi, edi
jb 0x43be77
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x14]
xor eax, eax
test bl, bl
movzx edx, dl
cmovne edx, eax
mov dword [ebp - 0x30], edx
mov ebx, dword [ebp - 0x3c]
cmp word [ebx], 0
je 0x43bee9
test dl, dl
jne 0x43bee9
cmp byte [ebp - 0xd], dl
jne 0x43bee9
add esi, 0x1c
cmp dword [esi], 0
je 0x43bf0e
mov ecx, dword [ebp - 0x14]
dec dword [ecx + 0x280]
push 0x4ceea8
push 0x4d70b0
jmp 0x43c6c0
add esi, 0x1c
cmp dword [esi], 0
jne 0x43bf04
mov ecx, dword [ebp - 0x14]
call fcn.0044f3d0
test eax, eax
je 0x43c675
mov edx, dword [ebp - 0x30]
cmp byte [ebp - 0xd], 0
jne 0x43bf12
test dl, dl
jne 0x43bf12
mov eax, ebx
jmp 0x43bf17
mov eax, 0x4ceea8
mov ecx, dword [ebp - 0x2c]
mov edx, dword [esi]
push 0
push dword [ebp - 0x6c]
push eax
push edi
push ecx
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebp - 0x44]
call fcn.004163a0
add esp, 0x14
test eax, eax
je 0x43c675
cmp dword [esi], 0
jne 0x43bd1f
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x28], eax
cmp eax, 0xffffffff
jne 0x43b260
cmp byte [ebp - 0x36], 0
jne 0x43c68f
mov eax, dword [ebx + 0x44]
test eax, eax
jne 0x43c631
cmp dword [ebx + 0x58], eax
je 0x43c68f
lea eax, [ebx + 0x70]
mov ecx, ebx
push eax
push 0x4d7504
jmp 0x43c6c0
test edi, edi
je 0x43bfa6
movzx eax, byte [ebp - 0xd]
jmp 0x43bfaf
xor eax, eax
cmp word [ebp - 0x4c], ax
sete al
test eax, eax
je 0x43bf44
mov edx, dword [ebp - 0x2c]
mov ecx, ebx
mov eax, dword [ebp - 0x28]
sub ecx, edx
sar ecx, 1
sub eax, ecx
mov dword [ebp - 0x28], eax
add eax, eax
push eax
push ebx
push edx
call fcn.0049cad0
mov ecx, dword [ebp - 0x28]
add esp, 0xc
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov ebx, dword [ebp - 0x14]
mov word [eax + ecx*2], dx
lea eax, [ebp - 0x6c]
mov esi, dword [ebx + 0x44]
mov ecx, ebx
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp + 8]
call fcn.0043c910
test eax, eax
je 0x43c675
push 0
push 0
push 0
push 0
push 3
mov ecx, ebx
call fcn.00440080
test eax, eax
je 0x43c675
push 0
push 0
push 0
push dword [ebp - 0x2c]
mov ecx, ebx
call fcn.0043ebb0
test eax, eax
je 0x43c675
push 0
push 0
push 0
push 0
push 4
mov ecx, ebx
call fcn.00440080
test eax, eax
je 0x43c675
cmp esi, dword [ebx + 0x44]
je 0x43bf47
mov dword [ebx + 0x644], 0
push 0x4ceea8
push 0x4d70b0
mov ecx, ebx
jmp 0x43c6c0
mov edx, dword [ebp - 0x28]
xor ecx, ecx
mov eax, dword [ebp - 0x2c]
dec edx
mov dword [ebp - 0x28], edx
push 0x4d45f8
mov word [eax + edx*2], cx
push dword [ebp - 0x2c]
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x43c0c8
mov eax, dword [ebx + 0x44]
test eax, eax
je 0x43c0c8
mov eax, dword [eax + 0x10]
test eax, eax
je 0x43c0c8
cmp byte [eax], 0x1a
jne 0x43c0c8
push 0
push 0
push 0
push 0
push 0x1b
mov ecx, ebx
call fcn.00440080
test eax, eax
je 0x43c675
jmp 0x43bf47
cmp dword [ebx + 0x1c], 0
jne 0x43c062
mov edi, dword [ebp - 0x2c]
cmp word [edi], 0
je 0x43c675
mov eax, dword [0x4e47f8]
lea esi, [ebx + 8]
mov eax, dword [eax + 0x18]
test eax, eax
lea ecx, [eax + 0x34]
mov edx, ecx
cmove edx, esi
mov dword [ebp - 0x34], edx
je 0x43c0fc
mov esi, dword [ecx]
add eax, 0x38
jmp 0x43c101
mov esi, dword [esi]
lea eax, [ebx + 0xc]
mov dword [ebp - 0x3c], eax
test esi, esi
je 0x43c11e
push edi
push dword [esi]
call fcn.0049ee91
add esp, 8
test eax, eax
je 0x43c171
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x43c108
cmp word [edi], 0
je 0x43c18b
mov esi, edi
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x43c130
sub esi, ecx
sar esi, 1
lea eax, [esi + esi]
lea ecx, [eax + 2]
mov dword [ebp - 0x30], eax
call fcn.0047e560
mov ebx, eax
test ebx, ebx
je 0x43c6f2
test esi, esi
mov esi, dword [ebp - 0x30]
je 0x43c169
push esi
push edi
push ebx
call fcn.0049cad0
add esp, 0xc
xor eax, eax
mov word [esi + ebx], ax
jmp 0x43c190
push edi
push 0x4d79d0
mov ecx, ebx
call fcn.0040d660
test eax, eax
je 0x43c675
jmp 0x43bf47
mov ebx, 0x4ceea8
mov ecx, 0x10
call fcn.0047e560
mov ecx, eax
test ecx, ecx
je 0x43c6f2
mov edx, dword [ebp - 0x3c]
mov dword [ecx + 8], 0
mov dword [ecx], ebx
mov dword [ecx + 4], 0
mov dword [ecx + 0xc], 0
mov eax, dword [edx]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x34]
cmp dword [eax], 0
jne 0x43c1d4
mov dword [eax], ecx
mov dword [edx], ecx
jmp 0x43bf44
mov eax, dword [edx]
mov dword [eax + 0xc], ecx
mov dword [edx], ecx
jmp 0x43bf44
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x27c], eax
mov dword [ebx + 0x280], esi
jmp 0x43bf47
mov edi, dword [ebp - 0x2c]
push 5
push 0x4d6f44
push edi
call fcn.0049f012
add esp, 0xc
test eax, eax
jne 0x43c2d0
movzx eax, word [edi + 0xa]
cmp eax, 0x20
je 0x43c221
cmp eax, 9
jne 0x43c2d0
add edi, 0xc
movzx eax, word [edi]
cmp eax, 0x20
je 0x43c231
cmp eax, 9
jne 0x43c236
add edi, 2
jmp 0x43c224
push eax
push 0x4d6f50
call fcn.0049ca21
add esp, 8
test eax, eax
jne 0x43c2d0
mov eax, dword [0x4e47f8]
cmp dword [eax + 0x18], 0
jne 0x43c5e5
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x28]
cmp word [eax + edx*2 - 2], 0x7b
jne 0x43c273
dec edx
mov ecx, eax
call fcn.00438270
jmp 0x43c2bb
mov edx, dword [ebp - 0x64]
cmp word [edx], 0x7b
jne 0x43c5d8
lea eax, [edx + 2]
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x43c290
cmp ecx, 9
jne 0x43c295
add eax, 2
jmp 0x43c283
mov ecx, dword [ebp - 0x60]
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [ebp - 0x60], ecx
je 0x43c2b6
lea eax, [ecx + ecx]
push eax
lea eax, [edx + 2]
push eax
push edx
call fcn.0049cad0
add esp, 0xc
jmp 0x43c2bb
xor eax, eax
mov word [edx], ax
push edi
mov ecx, ebx
call fcn.00442130
test eax, eax
je 0x43c675
jmp 0x43bf47
lea eax, [ebp - 0x6c]
mov ecx, ebx
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp + 8]
call fcn.0043c910
test eax, eax
je 0x43c675
cmp dword [ebx + 0x274], 0
mov eax, dword [0x4e47f8]
je 0x43c3b4
cmp dword [eax + 0x18], 0
jne 0x43c3b4
push 3
push 0x4d73e4
push dword [ebp - 0x2c]
call fcn.0049f012
add esp, 0xc
test eax, eax
je 0x43c33e
push 3
push 0x4d73ec
push dword [ebp - 0x2c]
call fcn.0049f012
add esp, 0xc
test eax, eax
jne 0x43c5f4
mov edx, dword [ebp - 0x2c]
lea esi, [edx + 6]
movzx ecx, word [esi]
cmp ecx, 0x20
je 0x43c351
cmp ecx, 9
jne 0x43c356
add esi, 2
jmp 0x43c344
test cx, cx
jne 0x43c364
mov eax, dword [ebp - 0x64]
cmp word [eax], 0x7b
je 0x43c384
cmp ecx, 0x7b
jne 0x43c370
cmp word [esi + 2], 0
jmp 0x43c37e
cmp ecx, 0x3d
jne 0x43c5f7
cmp word [esi + 2], 0x3e
jne 0x43c5f7
push 0x2e
push dword [ebx + 0x278]
call fcn.0049ca21
mov ecx, dword [ebp - 0x2c]
add esp, 8
mov cx, word [ecx]
push esi
mov word [eax + 2], cx
push ecx
mov ecx, ebx
call fcn.00442c90
test eax, eax
je 0x43c675
jmp 0x43bf47
cmp dword [ebx + 0x58], 0
je 0x43c555
cmp dword [eax + 0x18], 0
jne 0x43c555
mov edi, dword [ebp - 0x2c]
push 6
push 0x4d2d08
push edi
mov byte [ebp - 0x70], 0
call fcn.0049f012
add esp, 0xc
test eax, eax
jne 0x43c427
movzx eax, word [edi + 0xc]
cmp eax, 0x20
je 0x43c3f1
cmp eax, 9
jne 0x43c427
add edi, 0xe
movzx eax, word [edi]
cmp eax, 0x20
je 0x43c401
cmp eax, 9
jne 0x43c406
add edi, 2
jmp 0x43c3f4
cmp eax, 0x7f
ja 0x43c423
push eax
call fcn.004a31c0
add esp, 4
test eax, eax
jne 0x43c423
cmp word [edi], 0x5f
je 0x43c423
mov edi, dword [ebp - 0x2c]
jmp 0x43c427
mov byte [ebp - 0x70], 1
mov edx, dword [ebp - 0x64]
mov ecx, edi
call fcn.0043a880
test al, al
je 0x43c44f
push 0
push dword [ebp - 0x70]
mov ecx, ebx
push edi
call fcn.004415f0
test eax, eax
je 0x43c675
jmp 0x43bf47
mov esi, edi
movzx eax, word [esi]
cmp eax, 0x7f
ja 0x43c473
push eax
call fcn.004a31c0
add esp, 4
test eax, eax
jne 0x43c473
movzx eax, word [esi]
cmp eax, 0x5f
je 0x43c473
cmp eax, 0x2e
jne 0x43c478
add esi, 2
jmp 0x43c451
cmp esi, edi
jbe 0x43c613
cmp ax, 0x20
je 0x43c48c
cmp ax, 9
jne 0x43c495
movzx eax, word [esi + 2]
add esi, 2
jmp 0x43c480
cmp ax, 0x3a
jne 0x43c4be
cmp word [esi + 2], 0x3d
jne 0x43c613
push dword [ebp - 0x70]
mov ecx, ebx
push edi
call fcn.00442d90
test eax, eax
je 0x43c675
jmp 0x43bf47
test ax, ax
je 0x43c4e4
cmp ax, 0x5b
je 0x43c4e4
cmp ax, 0x7b
je 0x43c4e4
cmp ax, 0x3d
jne 0x43c613
cmp word [esi + 2], 0x3e
jne 0x43c613
lea eax, [ebp - 0x45]
mov ecx, ebx
push eax
push dword [ebp - 0x70]
push edi
call fcn.00442960
test eax, eax
je 0x43c675
cmp byte [ebp - 0x45], 0
jne 0x43bf47
mov edx, dword [ebp - 0x64]
cmp word [edx], 0x7b
jne 0x43c604
lea eax, [edx + 2]
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x43c522
cmp ecx, 9
jne 0x43c527
add eax, 2
jmp 0x43c515
mov ecx, dword [ebp - 0x60]
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [ebp - 0x60], ecx
je 0x43c54b
lea eax, [ecx + ecx]
push eax
lea eax, [edx + 2]
push eax
push edx
call fcn.0049cad0
add esp, 0xc
jmp 0x43bf47
xor eax, eax
mov word [edx], ax
jmp 0x43bf47
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x2c]
call fcn.0043a880
mov ecx, ebx
push 0
push 0
test al, al
je 0x43c57f
push dword [ebp - 0x2c]
call fcn.004415f0
test eax, eax
je 0x43c675
jmp 0x43bf47
push 0
push dword [ebp - 0x2c]
call fcn.0043ebb0
test eax, eax
je 0x43c675
jmp 0x43bf47
mov ecx, dword [ebp - 0x14]
push dword [ebp - 0x2c]
push 0x4d7278
mov dword [ecx + 0x644], 0
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, edi
jmp 0x43c6bb
push dword [ebp - 0x2c]
mov ecx, esi
push 0x4d7220
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, esi
push 0x4d7028
jmp 0x43c6c0
push eax
push 0x4d73cc
mov ecx, ebx
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, ebx
push 0x4d7388
jmp 0x43c6c0
mov edx, dword [ebp - 0x2c]
push edx
push 0x4d73f8
mov ecx, ebx
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, ebx
push 0x4d7440
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, ebx
push 0x4d74a0
jmp 0x43c6c0
push dword [ebp - 0x2c]
mov ecx, ebx
push 0x4d7364
jmp 0x43c6c0
cmp byte [0x4ea604], 0
mov ecx, 0x4e9f30
je 0x43c655
push 0
push eax
push 0
push 0x4ceea8
push 0x4d7504
call fcn.0040c830
jmp 0x43c6c5
cmp byte [0x4ea607], 0
je 0x43c679
push dword [eax + 4]
movzx eax, word [eax + 2]
push eax
push 0x4ceea8
push 0x4d7504
call fcn.0040c730
xor esi, esi
jmp 0x43c6c7
push 0
push eax
push 0x4ceea8
push 0
push 0x4d7504
call fcn.0040d460
jmp 0x43c6c5
mov ecx, dword [ebx + 0x48]
test ecx, ecx
je 0x43c69d
call fcn.0040d9a0
jmp 0x43c6c5
cmp dword [ebx + 0x1c], 0
jne 0x43c062
inc dword [ebx + 0x280]
mov esi, 1
jmp 0x43c6c7
push 0x4ceea8
mov ecx, ebx
push 0x4d27a0
call fcn.0040d660
mov esi, eax
push dword [ebp - 0x64]
call fcn.0049ef92
add esp, 4
push dword [ebp - 0x2c]
call fcn.0049ef92
mov ecx, dword [ebp - 0xc]
add esp, 4
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
call fcn.0040dbe0
nop
xor dword [ebx + eax*2 + 0x43b43800], esi
add byte [edi], bh
mov ah, 0x43
add byte [esi - 0x4c], al
inc ebx
add byte [ebp - 0x4c], cl
inc ebx
add byte [edx - 0x4c], ah
inc ebx
add byte [esp + esi*4 + 0x43], dl
add byte [ebx - 0x4c], bl
inc ebx
add byte [edx - 0x4c], ch
inc ebx
add byte [eax], al
add dword [eax], ecx
or byte [eax], cl
add cl, byte [eax]
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
add ecx, dword [eax]
or byte [eax], cl
add al, 5
push es
or byte [edi], al
nop
iretd