Function at 0x4189b0
Capabilities:
Get keyboard layout
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x1a17c
call fcn.0049bf10
mov eax, dword [esp + 0x1a180]
xor ecx, ecx
push ebx
lea edx, [esp + 0x224]
mov word [esp + 0x822c], cx
mov dword [esp + 0xc], edx
xor edx, edx
push ebp
lea ecx, [esp + 0x12178]
push esi
mov dword [esp + 0x30], ecx
mov word [esp + 0x3a], dx
mov edx, dword [esp + 0x1a190]
xor ecx, ecx
or esi, 0xffffffff
push edi
mov byte [esp + 0x17], 0
mov word [esp + 0x48], cx
mov dword [0x4cc788], edx
mov dword [esp + 0x60], esi
test eax, eax
je 0x418a37
push 1
push 0x4000
lea ecx, [esp + 0x238]
push ecx
push eax
call fcn.00474eb0
test eax, eax
jne 0x418b6e
xor edx, edx
mov word [esp + 0x230], dx
mov dword [esp + 0x20], esi
push 2
lea eax, [esp + 0x234]
push 0x4a9770
push eax
call fcn.004929f5
add esp, 0xc
test eax, eax
sete al
mov byte [esp + 0x25], al
test al, al
je 0x418a70
xor ecx, ecx
mov word [esp + 0x230], cx
mov dword [esp + 0x20], ecx
lea ecx, [ecx]
cmp dword [esp + 0x20], 0xffffffff
je 0x41ad1a
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x18]
push 0xc
mov eax, 0x4cc518
inc edx
push 0x4a9778
xor edi, edi
push esi
mov dword [eax + 0x274], edx
mov dword [eax + 0x634], edi
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x418ab9
push esi
call fcn.0041b1b0
test eax, eax
je 0x41a62d
mov byte [esp + 0x74], 0
mov dword [esp + 0x28], edi
mov ebx, dword [esp + 0x34]
inc dword [esp + 0x60]
mov esi, dword [esp + 0x28]
test ebx, ebx
je 0x418cdf
mov eax, dword [esp + 0x1a190]
mov ecx, esi
mov edx, ebx
call fcn.0041afd0
mov ebp, eax
mov dword [esp + 0x64], ebp
test ebp, ebp
je 0x418ce6
cmp ebp, 0xffffffff
je 0x418ce6
test esi, esi
jne 0x418ce6
push 2
push 0x4a9794
push ebx
call fcn.004929f5
add esp, 0xc
test eax, eax
jne 0x418cfb
cmp byte [esp + 0x25], al
jne 0x418b38
mov eax, 0x3a
cmp word [ebx + 4], ax
jne 0x418b38
cmp word [ebx + 6], ax
je 0x418d06
lea eax, [ebp + ebp - 2]
push eax
lea ecx, [ebx + 4]
push ecx
push ebx
mov byte [esp + 0x31], 0
call fcn.004916b0
add esp, 0xc
lea eax, [ebp - 2]
mov edi, ebx
call fcn.004152e0
cmp word [ebx], 0
mov ebp, eax
mov dword [esp + 0x64], ebp
je 0x418ac2
jmp 0x418d06
cmp word [esp + eax*2 + 0x22e], 0xa
jne 0x418b7a
dec eax
xor ecx, ecx
mov word [esp + eax*2 + 0x230], cx
mov eax, esi
lea edi, [esp + 0x230]
call fcn.004152e0
mov esi, edi
call fcn.004153c0
mov edx, dword [0x4c7404]
push edx
mov ebp, eax
mov eax, edi
push 0x4c7410
push eax
call fcn.004929f5
add esp, 0xc
test eax, eax
jne 0x418bc9
xor ecx, ecx
mov word [esp + 0x230], cx
mov dword [esp + 0x20], ecx
jmp 0x418a3b
lea edx, [esp + 0x230]
push 0x4c7410
push edx
call fcn.00491a38
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x418cd6
jmp 0x418bf0
lea eax, [ebx - 2]
lea ecx, [esp + 0x230]
cmp eax, ecx
jb 0x418caa
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x418cbd
cmp ecx, 9
je 0x418cbd
lea edx, [esp + 0x230]
cmp eax, edx
mov dx, word [0x4c7980]
mov ecx, eax
jbe 0x418c49
jmp 0x418c30
cmp word [ecx], dx
jne 0x418c49
cmp word [ecx - 2], dx
jne 0x418c49
sub ecx, 4
lea esi, [esp + 0x230]
cmp ecx, esi
ja 0x418c30
lea esi, [esp + 0x230]
cmp ecx, esi
jb 0x418c80
cmp word [ecx], dx
jne 0x418c80
lea esi, [eax + 2]
mov ecx, esi
lea edi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x418c61
sub ecx, edi
sar ecx, 1
lea ecx, [ecx + ecx + 2]
push ecx
push esi
push eax
call fcn.004916b0
add esp, 0xc
dec ebp
mov edx, dword [0x4c7404]
lea eax, [ebx + edx*2]
push 0x4c7410
push eax
call fcn.00491a38
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x418bf0
mov dword [esp + 0x20], ebp
jmp 0x418a3b
xor eax, eax
mov word [esp + 0x230], ax
mov dword [esp + 0x20], eax
jmp 0x418a3b
xor ecx, ecx
lea edx, [esp + 0x230]
mov word [eax], cx
sub eax, edx
sar eax, 1
mov esi, edx
call fcn.004153c0
mov ebp, eax
mov dword [esp + 0x20], ebp
jmp 0x418a3b
or ebp, 0xffffffff
mov dword [esp + 0x64], ebp
cmp byte [esp + 0x25], 0
je 0x418d24
cmp ebp, 0xffffffff
jne 0x418ac2
jmp 0x4194d8
cmp byte [esp + 0x25], 0
jne 0x418ac2
push 2
push 0x4a9770
push ebx
call fcn.004929f5
add esp, 0xc
test eax, eax
jne 0x418ce6
mov byte [esp + 0x25], 1
jmp 0x418ac2
test esi, esi
jne 0x41929e
cmp ebp, 0xffffffff
je 0x418d9d
cmp word [ebx], 0x28
jne 0x418d9d
cmp word [ebx + 2], 0x3a
lea esi, [ebx + 2]
je 0x418d9d
cmp word [ebx + ebp*2 - 2], 0x3a
je 0x418d9d
mov dl, byte [0x4cbd6c]
mov eax, 1
mov byte [esp + 0x2f], dl
mov dword [esp + 0x28], eax
mov dword [esp + 0x6c], 0
mov byte [esp + 0x32], al
mov byte [esp + 0x31], 0
mov byte [esp + 0x2e], 0
mov byte [esp + 0x30], al
xor edx, edx
mov dword [esp + 0x90], 0xa
mov dword [esp + 0x68], eax
movzx eax, word [esi]
cmp eax, 0x20
je 0x418d98
cmp eax, 9
jne 0x41903b
add esi, 2
jmp 0x418d87
mov dword [esp + 0x28], 0
cmp ebp, 0xffffffff
je 0x4194d8
test ebp, ebp
je 0x418ac2
cmp word [ebx + ebp*2 - 2], 0x3a
jne 0x418dc8
cmp word [ebx], 0x2c
jne 0x4194d8
movzx esi, word [ebx]
test esi, 0xffffff80
jne 0x418de5
push 2
push esi
call fcn.00491e8e
add esp, 8
test eax, eax
je 0x418de5
and esi, 0xffffffdf
movzx eax, si
cmp eax, 0x41
je 0x418f9b
cmp eax, 0x4f
je 0x418f46
movzx eax, word [ebx]
cmp eax, 0x3a
je 0x418e0c
cmp eax, 0x2b
je 0x418e0c
cmp eax, 0x2d
jne 0x418e16
cmp word [ebx + 2], ax
je 0x4194d8
push eax
push 0x4a97b8
call fcn.00491a11
add esp, 8
test eax, eax
je 0x4194d8
push 0x4a97dc
push ebx
call fcn.00491a38
mov edi, eax
add esp, 8
test edi, edi
je 0x418ff3
cmp word [ebx], 0x3a
jne 0x418ea7
movzx eax, word [ebx + 2]
lea esi, [ebx + 2]
test ax, ax
je 0x418e9d
cmp ax, 0x3a
je 0x4194d8
movzx eax, ax
test eax, 0xffffff80
jne 0x418e7c
push 0x107
push eax
call fcn.00491e8e
add esp, 8
test eax, eax
jne 0x418e91
movzx edx, word [esi]
push edx
push 0x4a97e4
call fcn.00491a11
add esp, 8
test eax, eax
je 0x418ea7
movzx eax, word [esi + 2]
add esi, 2
test ax, ax
jne 0x418e56
cmp word [esi], 0x3a
je 0x4194d8
cmp word [ebx], 0x2c
jne 0x418eef
lea eax, [ebx + 2]
call fcn.00409e50
push 2
mov esi, eax
push 0x4a97dc
push esi
call fcn.004929f5
add esp, 0xc
test eax, eax
je 0x4194d8
push 3
push 0x4a780c
add esi, 0xfffffffe
push esi
call fcn.004929f5
add esp, 0xc
test eax, eax
je 0x4194d8
jmp 0x418ff3
mov eax, ebx
cmp ebx, edi
jae 0x418f02
cmp word [eax], 0x22
je 0x418f02
add eax, 2
cmp eax, edi
jb 0x418ef5
cmp eax, edi
je 0x4194d8
movzx eax, word [edi + 4]
lea ecx, [edi + 4]
test ax, ax
je 0x4194d8
lea ebx, [ebx]
cmp ax, 0x22
je 0x418f37
movzx eax, word [ecx + 2]
add ecx, 2
test ax, ax
jne 0x418f20
jmp 0x4194d8
cmp word [ecx], 0
je 0x4194d8
jmp 0x418ff3
movzx esi, word [ebx + 2]
test esi, 0xffffff80
jne 0x418f64
push 2
push esi
call fcn.00491e8e
add esp, 8
test eax, eax
je 0x418f64
and esi, 0xffffffdf
cmp si, 0x52
jne 0x4194d8
movzx eax, word [ebx + 4]
lea ecx, [ebx + 4]
cmp eax, 0x20
je 0x418f83
cmp eax, 9
jne 0x4194d8
movzx eax, word [ecx]
cmp eax, 0x20
je 0x418f90
cmp eax, 9
jne 0x418f95
add ecx, 2
jmp 0x418f83
movzx eax, word [ecx]
push eax
jmp 0x418fde
push 3
push 0x4a979c
push ebx
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x4194d8
movzx eax, word [ebx + 6]
lea ecx, [ebx + 6]
cmp eax, 0x20
je 0x418fc8
cmp eax, 9
jne 0x4194d8
movzx eax, word [ecx]
cmp eax, 0x20
je 0x418fd5
cmp eax, 9
jne 0x418fda
add ecx, 2
jmp 0x418fc8
movzx ecx, word [ecx]
push ecx
push 0x4a97a4
call fcn.00491a11
add esp, 8
test eax, eax
jne 0x4194d8
mov esi, dword [esp + 0x20]
lea edx, [esi + ebp]
cmp edx, 0x4000
jae 0x41ab43
cmp word [ebx], 0x2c
je 0x41901a
mov ecx, dword [esp + 0x18]
mov eax, 0x20
mov word [ecx + esi*2], ax
inc esi
mov eax, dword [esp + 0x18]
lea edx, [ebp + ebp + 2]
push edx
lea ecx, [eax + esi*2]
push ebx
push ecx
call fcn.00498a60
add esp, 0xc
add esi, ebp
mov dword [esp + 0x20], esi
jmp 0x418ac2
cmp word [esi], dx
je 0x419294
mov ebx, 0x30
mov edi, esi
test esi, esi
je 0x419091
movzx eax, word [esi]
test ax, ax
je 0x419091
jmp 0x419060
movzx edx, ax
mov ecx, 0x4a781c
mov eax, 0x20
lea ecx, [ecx]
cmp dx, ax
je 0x419144
movzx eax, word [ecx + 2]
add ecx, 2
test ax, ax
jne 0x419070
movzx eax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x419060
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419096
sub eax, edx
sar eax, 1
lea ebp, [esi + eax*2]
movzx edi, word [ebp]
push 4
xor eax, eax
push 0x4a9830
push esi
mov dword [esp + 0x64], edi
mov word [ebp], ax
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x4191e5
push 0xf
add esi, 8
lea ecx, [esp + 0x94]
push esi
push ecx
call fcn.004937a4
movzx ebx, word [0x4c7980]
add esp, 0xc
xor edx, edx
mov word [esp + 0xae], dx
lea ecx, [esp + 0x90]
lea esp, [esp]
movzx eax, word [ecx]
test ax, ax
je 0x419119
cmp ax, bx
je 0x41914b
movzx eax, word [ecx + 2]
add ecx, 2
test ax, ax
jne 0x419108
lea eax, [esp + 0x90]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419123
mov edi, dword [esp + 0x58]
sub eax, edx
sar eax, 1
mov dword [esp + 0x68], eax
mov ebx, 0x30
jmp 0x419272
mov ebp, edi
jmp 0x4190a8
cmp word [ecx], 0
je 0x419119
movzx eax, word [ecx + 2]
lea esi, [ecx + 2]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x419167.99
movzx eax, byte [eax + 0x41ae08]
jmp dword [eax*4 + 0x41ade4]
mov edx, 7
mov word [esi], dx
jmp case.0x419167.99
mov eax, 8
jmp 0x4191b0
mov edx, 0xc
mov word [esi], dx
jmp case.0x419167.99
mov eax, 0xa
jmp 0x4191b0
mov edx, 0xd
mov word [esi], dx
jmp case.0x419167.99
mov eax, 9
jmp 0x4191b0
mov edx, 0xb
mov word [esi], dx
jmp case.0x419167.99
mov eax, 0x20
mov word [esi], ax
mov eax, esi
lea edi, [eax + 2]
jmp 0x4191c0
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x4191c0
sub eax, edi
sar eax, 1
lea edx, [eax + eax + 2]
push edx
push esi
push ecx
call fcn.004916b0
add esp, 0xc
mov ecx, esi
jmp 0x419100
push 5
push 0x4a983c
push esi
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x419204
cmp word [esi + 0xa], bx
setne byte [esp + 0x2f]
jmp 0x419272
push 5
push 0x4a9848
push esi
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x419223
cmp word [esi + 0xa], bx
setne byte [esp + 0x32]
jmp 0x419272
movzx eax, word [esi]
test ax, ax
je 0x419272
jmp 0x419230
movzx eax, ax
add eax, 0xffffffdb
cmp eax, 0x3e
ja case.0x419242.38
movzx eax, byte [eax + 0x41ae38]
jmp dword [eax*4 + 0x41ae20]
mov byte [esp + 0x31], 1
jmp case.0x419242.38
mov byte [esp + 0x2e], 1
jmp case.0x419242.38
mov byte [esp + 0x30], 0
jmp case.0x419242.38
mov dword [esp + 0x28], 2
movzx eax, word [esi + 2]
add esi, 2
test ax, ax
jne 0x419230
mov word [ebp], di
mov esi, ebp
movzx eax, word [esi]
cmp eax, 0x20
je 0x419285
cmp eax, 9
jne 0x41928a
add esi, 2
jmp 0x419278
cmp word [esi], 0
jne 0x419049
mov byte [esp + 0x74], 1
jmp 0x418ac2
cmp ebp, 0xffffffff
je 0x41acf9
cmp ebp, 0xfffffffe
je 0x418ac2
cmp word [ebx], 0x29
jne 0x419348
mov eax, ebx
mov dword [esp + 0x28], 0
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4192c7
sub eax, edx
sar eax, 1
lea ecx, [ebx + eax*2 - 2]
lea ebx, [ebx]
movzx edx, word [ecx]
cmp edx, 0x20
je 0x4192ed
cmp edx, 9
jne 0x4192f7
cmp ecx, ebx
je 0x419310
sub ecx, 2
dec eax
jmp 0x4192e0
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x34]
xor edx, edx
mov ebp, eax
add ebx, 2
mov word [ecx + 2], dx
dec ebp
jmp 0x419457
movzx edx, word [ecx]
cmp edx, 0x20
je 0x419330
cmp edx, 9
je 0x419330
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x34]
mov ebp, eax
add ebx, 2
dec ebp
jmp 0x419457
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x34]
xor eax, eax
xor ebp, ebp
add ebx, 2
mov word [ecx], ax
dec ebp
jmp 0x419457
cmp byte [esp + 0x32], 0
mov edi, dword [esp + 0x34]
mov ebx, edi
je 0x419360
mov eax, ebp
mov esi, edi
call fcn.004153c0
mov ebp, eax
cmp byte [esp + 0x2f], 0
je 0x419374
mov edi, dword [esp + 0x34]
mov eax, ebp
call fcn.004152e0
mov ebp, eax
xor esi, esi
cmp byte [esp + 0x31], 0
je 0x4193b3
mov ax, word [0x4c7980]
push esi
push 0x4001
push 0xffffffffffffffff
push 1
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x50]
push edx
mov word [esp + 0x54], ax
mov word [esp + 0x5c], ax
mov word [esp + 0x5e], ax
push edi
xor eax, eax
call fcn.00477a60
add esp, 0x1c
mov esi, eax
cmp byte [esp + 0x2e], 0
je 0x4193f8
mov ax, word [0x4c797c]
mov cx, word [0x4c7980]
push 0
push 0x4001
push 0xffffffffffffffff
push 1
mov word [esp + 0x4c], ax
mov word [esp + 0x56], ax
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x50]
push eax
push edi
xor eax, eax
mov word [esp + 0x60], cx
call fcn.00477a60
add esp, 0x1c
add esi, eax
cmp byte [esp + 0x30], 0
je 0x41943d
mov ax, word [0x4c7978]
mov cx, word [0x4c7980]
push 0
push 0x4001
push 0xffffffffffffffff
push 1
mov word [esp + 0x4c], ax
mov word [esp + 0x56], ax
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x50]
push eax
push edi
xor eax, eax
mov word [esp + 0x60], cx
call fcn.00477a60
add esp, 0x1c
add esi, eax
test esi, esi
je 0x419457
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419446
sub eax, edx
sar eax, 1
mov ebp, eax
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x20]
lea ecx, [esi + ebp]
add ecx, eax
cmp ecx, 0x4001
jae 0x41ab43
mov ecx, dword [esp + 0x6c]
inc ecx
mov dword [esp + 0x6c], ecx
cmp ecx, 1
jle 0x4194a7
test esi, esi
je 0x4194a7
cmp ebx, edi
jne 0x4194a7
lea edx, [esi + esi + 2]
push edx
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x94]
push ecx
lea eax, [edx + eax*2]
push eax
call fcn.00498a60
add esp, 0xc
add dword [esp + 0x20], esi
test ebp, ebp
je 0x418ac2
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
lea ecx, [ebp + ebp + 2]
push ecx
lea eax, [edx + esi*2]
push ebx
push eax
call fcn.00498a60
add esp, 0xc
add esi, ebp
mov dword [esp + 0x20], esi
jmp 0x418ac2
mov word [ebp], di
mov ebp, dword [esp + 0x40]
lea esp, [esp]
cmp dword [esp + 0x20], 0
je 0x41a8f0
cmp word [esp + 0x8238], 0
je 0x419661
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x18]
mov bl, byte [esp + 0x1f]
mov esi, 0x4cc518
mov edi, dword [esi + 0x274]
mov dword [esi + 0x274], ecx
cmp word [edx], 0x7b
je 0x41955c
test bl, bl
jne 0x41955c
test ebp, ebp
jne 0x41ab60
cmp dword [esi + 0x4c], ebp
je 0x41953f
mov eax, dword [0x4c7a54]
cmp dword [eax + 0xb4], ebp
je 0x41ab81
push 0
push 0
push 0
push 0
push 0
push 3
lea ecx, [esp + 0x8250]
push ecx
mov ecx, esi
call fcn.0041c940
jmp 0x4195db
mov eax, ebp
sub eax, 0
je 0x41959a
dec eax
je 0x419583
dec eax
jne 0x4195ed
lea esi, [esp + 0x8238]
call fcn.00421660
test eax, eax
je 0x41a62d
jmp 0x4195ed
lea edx, [esp + 0x8238]
push edx
call fcn.00421180
test eax, eax
je 0x41a62d
jmp 0x4195ed
mov eax, dword [0x4c7a54]
cmp dword [eax + 0xb4], 0
lea edx, [esp + 0x8238]
jne 0x41abb1
lea ecx, [esp + 0x10240]
push ecx
push edx
call fcn.00420750
test eax, eax
je 0x41a62d
test bl, bl
je 0x4195ed
push 0
push 0
push 0
push 0x75
push esi
call fcn.0041eef0
test eax, eax
je 0x41a62d
mov dword [esi + 0x634], 0
xor eax, eax
mov word [esp + 0x8238], ax
test ebp, ebp
je 0x419656
test bl, bl
jne 0x419656
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + 2]
add ecx, 2
cmp eax, 0x20
je 0x419603
cmp eax, 9
je 0x419603
cmp word [ecx], 0
jne 0x41962a
mov eax, 0x4cc518
mov dword [eax + 0x274], edi
jmp 0x41a8f0
mov eax, ecx
lea esi, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x419630
sub eax, esi
sar eax, 1
lea edx, [eax + eax + 2]
push edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
push ecx
push eax
call fcn.004916b0
add esp, 0xc
mov eax, 0x4cc518
mov dword [eax + 0x274], edi
mov ecx, dword [esp + 0x18]
cmp word [ecx], 0x7d
jne 0x41974b
mov esi, 0x4cc518
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x41974b
mov edx, dword [0x4c7a54]
cmp dword [edx + 0xb4], 0
jne 0x41974b
cmp dword [esi + 0x268], 0
je 0x4196c4
mov eax, dword [esi + 0x26c]
mov dword [esi + 0x268], 0
test eax, eax
je 0x4196fe
push eax
call fcn.00491536
add esp, 4
mov dword [esi + 0x26c], 0
jmp 0x4196fe
dec eax
mov dword [esi + 0x4c], eax
mov edi, dword [esi + eax*4 + 0x50]
call fcn.00470930
mov eax, dword [esi + 0x4c]
mov eax, dword [esi + eax*4 + 0x50]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
add esi, 0x64
push 0x2e
push esi
call fcn.00492a2e
add esp, 8
test eax, eax
je 0x4196f9
xor ecx, ecx
mov word [eax], cx
jmp 0x4196fe
xor edx, edx
mov word [esi], dx
mov eax, dword [esp + 0x18]
movzx ecx, word [eax + 2]
add eax, 2
cmp ecx, 0x20
je 0x419702
cmp ecx, 9
je 0x419702
cmp word [eax], 0
mov dword [esp + 0x18], eax
je 0x41a8f0
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419724
sub eax, edx
sar eax, 1
mov dword [esp + 0x20], eax
mov eax, 0x4cc518
mov dword [eax + 0x634], 0
jmp 0x4194e0
mov esi, 0x4cc518
cmp dword [esi + 0x268], 0
je 0x419831
mov eax, dword [0x4c7a54]
cmp dword [eax + 0xb4], 0
jne 0x419831
mov edi, dword [esp + 0x18]
push 3
push 0x4a9934
push edi
call fcn.0049109d
add esp, 0xc
test eax, eax
je 0x41979f
push 3
push 0x4a993c
push edi
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x41abcb
lea esi, [edi + 6]
movzx eax, word [esi]
cmp eax, 0x20
je 0x4197af
cmp eax, 9
jne 0x4197b4
add esi, 2
jmp 0x4197a2
movzx eax, word [esi]
test ax, ax
je 0x4197d0
cmp eax, 0x7b
jne 0x41abcb
cmp word [esi + 2], 0
jne 0x41abcb
mov eax, 0x4cc518
mov eax, dword [eax + 0x26c]
lea edx, [esp + 0x8238]
sub edx, eax
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x4197e4
lea ecx, [esp + 0x8238]
push 0x2e
push ecx
call fcn.00491a11
mov dx, word [edi]
mov word [eax + 2], dx
add esp, 8
cmp word [esi], 0x7b
mov eax, 0x4cc518
mov eax, dword [eax + 0x274]
mov dword [esp + 0x4c], eax
sete byte [esp + 0x1f]
mov dword [esp + 0x40], 0
jmp 0x41a8f0
mov ebx, dword [esp + 0x18]
lea ecx, [esp + 0x1f]
push ecx
mov eax, ebx
call fcn.00418780
add esp, 4
test al, al
je 0x41987e
lea edx, [esp + 0x8238]
mov eax, ebx
sub edx, ebx
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x419853
mov eax, 0x4cc518
mov edx, dword [eax + 0x274]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x40], 0
jmp 0x41a8f0
mov eax, dword [0x4c7a54]
cmp dword [eax + 0xb4], 0
jne 0x419a61
lea ecx, [esp + 0x1f]
push ecx
mov eax, ebx
call fcn.00418840
add esp, 4
test eax, eax
je 0x4198db
lea edx, [esp + 0x8238]
sub edx, eax
lea esp, [esp]
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x4198b0
mov eax, 0x4cc518
mov edx, dword [eax + 0x274]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x40], 1
jmp 0x41a8f0
cmp dword [esi + 0x4c], 0
je 0x419a61
mov esi, ebx
jmp 0x4198f0
movzx eax, word [esi]
test eax, 0xffffff80
jne 0x41990c
push 0x107
push eax
call fcn.00491e8e
add esp, 8
test eax, eax
jne 0x41991e
movzx eax, word [esi]
cmp eax, 0x5f
je 0x41991e
cmp eax, 0x7f
ja 0x41991e
cmp eax, 0x2e
jne 0x419923
add esi, 2
jmp 0x4198f0
cmp esi, ebx
jbe 0x4199df
jmp 0x419930
movzx eax, word [esi]
cmp eax, 0x20
je 0x41993d
cmp eax, 9
jne 0x419942
add esi, 2
jmp 0x419930
movzx eax, word [esi]
cmp eax, 0x3a
jne 0x419966
cmp word [esi + 2], 0x3d
jne 0x419966
push 0
push ebx
call fcn.00421800
test eax, eax
je 0x41a62d
jmp 0x41a8f0
test ax, ax
je 0x41997c
cmp eax, 0x5b
je 0x41997c
cmp eax, 0x7b
jne 0x4199df
cmp word [esi + 2], 0
jne 0x4199df
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419981
sub eax, edx
sar eax, 1
cmp word [ebx + eax*2 - 2], 0x7b
sete cl
mov byte [esp + 0x1f], cl
test cl, cl
je 0x4199a9
dec eax
mov esi, ebx
call fcn.004153c0
lea edx, [esp + 0x8238]
mov eax, ebx
sub edx, ebx
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x4199b4
mov eax, 0x4cc518
mov eax, dword [eax + 0x274]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], 2
jmp 0x41a8f0
push 6
push 0x4a68b4
push ebx
call fcn.0049109d
add esp, 0xc
test eax, eax
jne 0x419a19
movzx eax, word [ebx + 0xc]
cmp eax, 0x20
je 0x419a01
cmp eax, 9
jne 0x419a19
push 1
add ebx, 0xe
push ebx
call fcn.00421800
test eax, eax
je 0x41a62d
jmp 0x41a8f0
cmp word [ebx], 0x23
jne 0x41abe8
mov edi, 0x4cc518
mov esi, dword [edi + 0x274]
push ebx
call fcn.0041b1b0
test eax, eax
je 0x41a62d
cmp eax, 3
jne 0x41abe8
mov ecx, dword [esp + 0x1a194]
mov dword [edi + 0x270], ecx
mov dword [edi + 0x274], esi
jmp 0x41a8f0
mov ebx, dword [esp + 0x18]
xor esi, esi
xor ebp, ebp
cmp word [ebx], 0x3a
mov dword [esp + 0x28], esi
jne 0x419b49
movzx ecx, word [ebx + 2]
cmp cx, si
je 0x419b49
lea edi, [ebx + 2]
mov dword [esp + 0x7c], edi
cmp ecx, 0x3a
je 0x419aa4
push 0x3a
push edi
call fcn.00491a11
add esp, 8
cmp eax, esi
je 0x419b45
add eax, 2
jmp 0x419ab1
cmp word [ebx + 4], si
lea eax, [ebx + 4]
je 0x419b49
mov dword [esp + 0x28], eax
cmp eax, esi
je 0x419b49
mov dl, byte [0x4cbd5f]
mov byte [esp + 0x26], dl
cmp edi, eax
jae 0x419b0c
jmp 0x419ad0
movzx esi, word [edi]
test esi, 0xffffff80
jne 0x419aed
push 2
push esi
call fcn.00491e8e
add esp, 8
test eax, eax
je 0x419aed
and esi, 0xffffffdf
cmp si, 0x58
je 0x419afe
add edi, 2
cmp edi, dword [esp + 0x28]
jb 0x419ad0
jmp 0x419b08
cmp word [edi + 2], 0x30
setne byte [esp + 0x26]
mov eax, dword [esp + 0x28]
mov edi, eax
movzx eax, word [edi]
mov cx, word [0x4c7980]
test ax, ax
je 0x419b3b
lea ecx, [ecx]
cmp ax, cx
je 0x419ba9
cmp ax, 0x3a
je 0x419ba9
movzx eax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x419b20
xor esi, esi
cmp ebp, esi
jne 0x419c96
mov dword [esp + 0x28], esi
push 0x4a97dc
push ebx
call fcn.00491a38
mov ebp, eax
add esp, 8
cmp ebp, esi
je 0x41a467
cmp ebp, ebx
jne 0x419b6f
cmp word [ebp + 4], 0x3a
jne 0x419b6f
add ebp, 2
mov esi, ebp
cmp ebp, ebx
jbe 0x419b89
movzx eax, word [esi]
cmp eax, 0x20
je 0x419b82
cmp eax, 9
jne 0x419b89
sub esi, 2
cmp esi, ebx
ja 0x419b75
movzx edi, word [esi]
xor eax, eax
mov word [esi], ax
mov ecx, ebx
movzx eax, word [ecx]
cmp eax, 0x20
je 0x419ba4
cmp eax, 9
jne 0x419c69
add ecx, 2
jmp 0x419b93
movzx eax, word [edi]
test ax, ax
je 0x419b3b
lea esi, [edi + 2]
cmp eax, 0x3a
jne 0x419bd9
cmp word [esi], ax
jne 0x419c61
cmp byte [esp + 0x26], 0
mov ebp, edi
mov edi, esi
jne 0x419b3b
add edi, 2
jmp 0x419b0e
movzx eax, word [esi]
add eax, 0xffffff9f
cmp eax, 0x15
ja case.0x419beb.99
movzx eax, byte [eax + 0x41ae98]
jmp dword [eax*4 + 0x41ae78]
mov ecx, 7
jmp 0x419c2d
mov edx, 8
mov word [esi], dx
jmp case.0x419beb.99
mov eax, 0xc
mov word [esi], ax
jmp case.0x419beb.99
mov ecx, 0xa
jmp 0x419c2d
mov edx, 0xd
mov word [esi], dx
jmp case.0x419beb.99
mov eax, 9
mov word [esi], ax
jmp case.0x419beb.99
mov ecx, 0xb
mov word [esi], cx
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419c35
sub eax, edx
sar eax, 1
lea edx, [eax + eax + 2]
push edx
push esi
push edi
call fcn.004916b0
add esp, 0xc
cmp word [edi], 0x3a
jne 0x419c61
cmp word [esi], 0x3a
jne 0x419c61
mov edi, esi
add edi, 2
jmp 0x419b0e
push 0
push 0
push ecx
call fcn.0040c320
add esp, 0xc
mov dword [esp + 0x78], eax
test eax, eax
je 0x419c89
cmp eax, 4
je 0x41a62d
jmp 0x419c8b
xor ebp, ebp
mov word [esi], di
test ebp, ebp
je 0x41a467
cmp ebp, ebx
jbe 0x41a467
mov ecx, dword [0x4c7a54]
cmp dword [ecx + 0xb4], 0
mov ecx, 0x4cc518
jne 0x41ac05
mov eax, dword [ecx + 4]
test eax, eax
je 0x419cc6
cmp byte [eax], 0x1a
je 0x41ac1d
xor edx, edx
mov word [ebp], dx
add ebp, 4
mov dword [esp + 0x20], ebp
cmp dword [esp + 0x28], edx
jne 0x41a140
cmp word [ebp], dx
je 0x419d22
mov edx, ebp
movzx eax, word [edx]
cmp eax, 0x20
je 0x419cf2
cmp eax, 9
jne 0x419cf7
add edx, 2
jmp 0x419ce5
mov eax, edx
sub eax, ebp
sar eax, 1
je 0x419d22
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419d04
sub eax, esi
sar eax, 1
lea ecx, [eax + eax + 2]
push ecx
push edx
push ebp
call fcn.004916b0
add esp, 0xc
cmp word [ebp], 0
je 0x41a140
cmp word [ebp + 2], 0
je 0x419ea7
movzx eax, word [ebp + 2]
xor dl, dl
xor cl, cl
mov esi, ebp
test ax, ax
je 0x419e28
mov edi, dword [esp + 0x5c]
nop
cmp ax, 0x20
je case.0x419d70.34
movzx eax, word [esi]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x419d70.34
movzx eax, byte [eax + 0x41aed0]
jmp dword [eax*4 + 0x41aeb0]
mov cl, 1
jmp case.0x419d70.36
mov dl, 1
jmp case.0x419d70.36
test cl, cl
jne 0x419d95
test dl, dl
jne 0x419d99
or edi, 1
jmp case.0x419d70.36
test dl, dl
je 0x419da0
or byte [esp + 0x16], 4
xor dl, dl
test cl, cl
je case.0x419d70.36
or byte [esp + 0x16], 8
jmp 0x419e12
test cl, cl
jne 0x419db8
test dl, dl
jne 0x419dbc
or edi, 2
jmp case.0x419d70.36
test dl, dl
je 0x419dc3
or byte [esp + 0x16], 1
xor dl, dl
test cl, cl
je case.0x419d70.36
or byte [esp + 0x16], 2
jmp 0x419e12
test cl, cl
jne 0x419ddb
test dl, dl
jne 0x419ddf
or edi, 4
jmp case.0x419d70.36
test dl, dl
je 0x419de6
or byte [esp + 0x16], 0x10
xor dl, dl
test cl, cl
je case.0x419d70.36
or byte [esp + 0x16], 0x20
jmp 0x419e12
test cl, cl
jne 0x419dfe
test dl, dl
jne 0x419e02
or edi, 8
jmp case.0x419d70.36
test dl, dl
je 0x419e09
or byte [esp + 0x16], 0x40
xor dl, dl
test cl, cl
je case.0x419d70.36
or byte [esp + 0x16], 0x80
xor cl, cl
movzx eax, word [esi + 4]
add esi, 2
test ax, ax
jne 0x419d50
mov dword [esp + 0x5c], edi
push 0
mov ebp, esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push 0
xor ecx, ecx
mov eax, esi
call fcn.00414420
add esp, 8
mov byte [esp + 0x17], al
test al, al
je 0x41a140
mov bl, al
mov esi, dword [esp + 0x18]
cmp word [esi], 0
je 0x419f69
movzx ecx, word [esi + 2]
mov eax, esi
add esi, 2
xor bl, bl
xor dl, dl
test cx, cx
je 0x419f63
mov edi, dword [esp + 0x54]
jmp 0x419e80
cmp cx, 0x20
je case.0x419ea0.34
movzx ecx, word [eax]
add ecx, 0xffffffdf
cmp ecx, 0x5d
ja case.0x419ea0.34
movzx ecx, byte [ecx + 0x41af50]
jmp dword [ecx*4 + 0x41af30]
or bl, 0xff
mov byte [esp + 0x17], bl
jmp 0x419e4f
mov dl, 1
jmp case.0x419ea0.36
mov bl, 1
jmp case.0x419ea0.36
test dl, dl
jne 0x419ece
test bl, bl
jne 0x419ed2
or edi, 1
jmp case.0x419ea0.36
test bl, bl
je 0x419ed9
or byte [esp + 0x15], 4
xor bl, bl
test dl, dl
je case.0x419ea0.36
or byte [esp + 0x15], 8
jmp 0x419f4b
test dl, dl
jne 0x419ef1
test bl, bl
jne 0x419ef5
or edi, 2
jmp case.0x419ea0.36
test bl, bl
je 0x419efc
or byte [esp + 0x15], 1
xor bl, bl
test dl, dl
je case.0x419ea0.36
or byte [esp + 0x15], 2
jmp 0x419f4b
test dl, dl
jne 0x419f14
test bl, bl
jne 0x419f18
or edi, 4
jmp case.0x419ea0.36
test bl, bl
je 0x419f1f
or byte [esp + 0x15], 0x10
xor bl, bl
test dl, dl
je case.0x419ea0.36
or byte [esp + 0x15], 0x20
jmp 0x419f4b
test dl, dl
jne 0x419f37
test bl, bl
jne 0x419f3b
or edi, 8
jmp case.0x419ea0.36
test bl, bl
je 0x419f42
or byte [esp + 0x15], 0x40
xor bl, bl
test dl, dl
je case.0x419ea0.36
or byte [esp + 0x15], 0x80
xor dl, dl
mov eax, esi
movzx ecx, word [eax + 2]
lea esi, [eax + 2]
test cx, cx
jne 0x419e80
mov dword [esp + 0x54], edi
mov bl, byte [esp + 0x17]
mov esi, eax
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push 0
xor ecx, ecx
mov eax, esi
call fcn.00414420
push 0x4a780c
push esi
mov byte [esp + 0x37], al
call fcn.00491a38
mov dl, byte [esp + 0x37]
add esp, 0x10
test eax, eax
setne byte [esp + 0x3a]
dec dl
cmp dl, 5
ja 0x419fa8
cmp byte [esp + 0x27], 3
jne 0x419fb2
mov al, byte [esp + 0x27]
add al, 0x66
cmp al, 5
ja 0x419fb6
mov al, 1
jmp 0x419fb8
xor al, al
lea ecx, [ebx - 1]
cmp cl, 5
ja 0x419fc5
cmp bl, 3
jne 0x419fcd
add bl, 0x66
cmp bl, 5
ja 0x419fd5
mov bl, 1
mov byte [esp + 0x2d], bl
jmp 0x419fde
mov byte [esp + 0x2d], 0
mov bl, byte [esp + 0x2d]
test al, al
jne 0x419feb
mov byte [esp + 0x33], 1
test bl, bl
jne 0x419ff0
mov byte [esp + 0x33], 0
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x419ff5
sub eax, edx
sar eax, 1
cmp eax, 1
jne 0x41a01c
movzx edx, word [esi]
push edx
call dword [sym.imp.USER32.dll_IsCharUpperW]
mov ecx, 0x4a9a2c
test eax, eax
jne 0x41a021
mov ecx, 0x4a48a0
cmp byte [esp + 0x3a], 0
mov eax, 0x4a48a0
jne 0x41a032
mov eax, 0x4a9684
mov edx, dword [esp + 0x18]
push edx
push ecx
push eax
push 0x4a9a30
mov esi, 0x20
lea edi, [esp + 0x100]
call fcn.004772c0
push 0x1f
lea eax, [esp + 0xc4]
push ebp
push eax
call fcn.004937a4
mov esi, dword [esp + 0x3c]
add esp, 0x1c
push 7
lea edx, [esp + 0x84]
xor ecx, ecx
push esi
push edx
mov word [esp + 0xfa], cx
call fcn.004937a4
xor eax, eax
sub ebp, esi
mov word [esp + 0x9a], ax
mov eax, ebp
sar eax, 1
add esp, 0xc
cmp eax, 8
jae 0x41a0a2
xor ecx, ecx
mov word [esp + eax*2 + 0x80], cx
cmp word [esp + 0x80], 0
mov dword [esp + 0x50], 0
jne 0x41a8f0
mov al, byte [esp + 0x17]
cmp al, 0xd
je 0x41a11e
cmp al, 0x13
jne 0x41a8f0
movzx esi, word [esp + 0xb0]
test esi, 0xffffff80
jne 0x41a0eb
push 2
push esi
call fcn.00491e8e
add esp, 8
test eax, eax
je 0x41a0eb
and esi, 0xffffffdf
cmp si, 0x50
je 0x41a13b
movzx esi, word [esp + 0xb0]
test esi, 0xffffff80
jne 0x41a113
push 2
push esi
call fcn.00491e8e
add esp, 8
test eax, eax
je 0x41a113
and esi, 0xffffffdf
cmp si, 0x42
je 0x41a13b
jmp 0x41a8ff
lea edx, [esp + 0xb0]
push 0x4a61a0
push edx
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a8ff
mov byte [esp + 0x17], 0
mov ebx, 0x4cc518
cmp byte [ebx + 0x278], 0
je 0x41a182
push 0
push 0xff
push 0
push 0x67
push ebx
mov byte [ebx + 0x278], 0
call fcn.0041eef0
test eax, eax
je 0x41a62d
mov eax, dword [ebx + 4]
mov dword [eax + 0xc], 1
mov dword [ebx + 0x634], 0
mov ebp, dword [esp + 0x18]
push 1
mov eax, ebp
call fcn.0041c7f0
test eax, eax
je 0x41a62d
mov edi, dword [esp + 0x28]
test edi, edi
je 0x41a289
cmp word [edi], 0
je 0x41ac3b
cmp byte [esp + 0x26], 0
mov esi, dword [esp + 0x20]
mov eax, 0x4a48a0
jne 0x41a1bf
mov eax, esi
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
push 0
push ecx
push eax
push edx
push ecx
mov ecx, dword [ebx + 0x14]
mov eax, esp
mov dword [eax], ecx
mov edx, dword [ebx + 0x14]
mov eax, dword [edx + 4]
push eax
call fcn.0040d570
add esp, 0x18
test eax, eax
je 0x41a62d
cmp word [esi], 0
je 0x41a8f0
cmp byte [esp + 0x26], 0
je 0x41a264
mov ecx, esi
mov edi, edi
movzx eax, word [ecx]
cmp eax, 0x20
je 0x41a20d
cmp eax, 9
jne 0x41a212
add ecx, 2
jmp 0x41a200
push 0
push 0
push 0
push 0
push 0
push 0
push ecx
mov ebx, 0x4cc518
mov ecx, ebx
call fcn.0041c940
test eax, eax
je 0x41a62d
mov ecx, dword [ebx + 4]
mov al, byte [ecx]
cmp al, 9
jb 0x41a244
cmp al, 0x20
jbe 0x41ac55
cmp al, 0x21
je 0x41ac55
cmp al, 0x69
jb 0x41a258
cmp al, 0x6b
jbe 0x41ac55
cmp al, 0x6f
jb 0x41a264
cmp al, 0x71
jbe 0x41ac55
push 0
push 0
push 0
push 0x67
push ebx
call fcn.0041eef0
test eax, eax
je 0x41a62d
mov edx, dword [ebx + 4]
mov dword [edx + 0xc], 1
jmp 0x41a8f0
mov edi, dword [esp + 0x20]
xor esi, esi
cmp word [edi], si
je 0x41a387
push 0x4a7348
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a2b4
mov esi, 0x7ffe
jmp 0x41a367
push 0x4a7358
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a2d0
mov esi, 0x7ffd
jmp 0x41a367
push 0x4a7370
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a2ec
mov esi, 0x7ffc
jmp 0x41a367
push 0x4a7388
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a305
mov esi, 0x7ffb
jmp 0x41a367
push 0x4a73a4
push edi
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a31e
mov esi, 0x7ffa
jmp 0x41a367
xor esi, esi
push esi
push esi
push esi
push esi
push esi
push esi
push edi
mov ecx, ebx
call fcn.0041c940
test eax, eax
je 0x41a62d
mov eax, dword [ebx + 4]
mov al, byte [eax]
cmp al, 9
jb 0x41a347
cmp al, 0x20
jbe 0x41ac78
cmp al, 0x21
je 0x41ac78
cmp al, 0x69
jb 0x41a35b
cmp al, 0x6b
jbe 0x41ac78
cmp al, 0x6f
jb 0x41a367
cmp al, 0x71
jbe 0x41ac78
push 0
push 0
push 0
push 0x67
push ebx
call fcn.0041eef0
test eax, eax
je 0x41a62d
mov ecx, dword [ebx + 4]
mov dword [ecx + 0xc], 1
lea edx, [esp + 0x3b]
push edx
lea eax, [esp + 0x74]
push eax
push ebp
call fcn.0040ca80
mov edi, eax
add esp, 0xc
test edi, edi
je 0x41a407
test si, si
je 0x41a3ae
mov word [edi + 6], si
jmp 0x41a8f0
mov eax, dword [edi + 0x20]
test eax, eax
je 0x41a3d0
mov ecx, dword [0x4cb6dc]
jmp 0x41a3c0
cmp dword [eax + 4], ecx
je 0x41ac9b
mov eax, dword [eax + 8]
test eax, eax
jne 0x41a3c0
mov bl, byte [esp + 0x70]
mov esi, 0x4cc518
mov ecx, dword [esi + 0x14]
push ecx
call fcn.0040c200
test eax, eax
je 0x41acc2
cmp byte [esp + 0x3b], 0
jne 0x41a3fe
cmp byte [0x4cbd6d], 0
je 0x41a8f0
mov byte [edi + 0x14], 1
jmp 0x41a8f0
mov eax, dword [ebx + 0x14]
mov edx, dword [esp + 0x70]
mov ecx, dword [eax + 4]
push edx
push ecx
push esi
push eax
xor bl, bl
call fcn.0040bb80
add esp, 0x10
test eax, eax
jne 0x41a8f0
cmp dword [esp + 0x78], 3
jne 0x41a62d
push ebp
push 0x4a9b08
mov esi, 0x80
lea edi, [esp + 0x138]
call fcn.004772c0
fldz
fstp qword [esp]
mov edx, edi
push 0
push 0
push 0x10000
push edx
call fcn.0047c1a0
add esp, 0x18
jmp 0x41a8f0
mov esi, dword [esp + 0x20]
mov ebp, 0x3a
cmp word [ebx + esi*2 - 2], bp
jne 0x41a83b
cmp esi, 1
je 0x41acdc
movzx eax, word [ebx]
mov ecx, ebx
test ax, ax
je 0x41a4d2
mov dx, word [0x4c7978]
mov di, word [0x4c7980]
lea esp, [esp]
cmp ax, 0x20
je 0x41a83b
cmp ax, 9
je 0x41a83b
cmp ax, dx
je 0x41a83b
cmp ax, di
je 0x41a83b
movzx eax, word [ecx + 2]
add ecx, 2
test ax, ax
jne 0x41a4a0
cmp word [ebx + esi*2 - 4], bp
jne 0x41a4e2
cmp esi, 2
ja 0x41a83b
xor eax, eax
push 0x4a9090
push ebx
mov word [ebx + esi*2 - 2], ax
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a52e
mov ecx, 0x4cc518
mov eax, dword [ecx + 0x40]
test eax, eax
je 0x41a52e
mov eax, dword [eax + 0x10]
test eax, eax
je 0x41a52e
cmp byte [eax], 0x73
jne 0x41a52e
push 0
push 0
push 0
push 0x74
push ecx
call fcn.0041eef0
test eax, eax
je 0x41a62d
jmp 0x41a8f0
cmp word [ebx], 0
je 0x41a62d
mov eax, 0x4cc518
mov esi, dword [eax + 0x10]
test esi, esi
je 0x41a560
mov ecx, dword [esi + 4]
push ebx
push ecx
call fcn.00490e99
add esp, 8
test eax, eax
je 0x41a5e2
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x41a544
cmp word [ebx], 0
je 0x41a6e9
mov eax, ebx
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41a570
sub eax, edx
sar eax, 1
lea ebp, [eax + eax]
lea ebx, [ebp + 2]
lea edx, [ebx - 1]
mov dword [esp + 0x58], eax
cmp edx, 0xffff
ja 0x41a619
xor edi, edi
cmp dword [0x4cc494], edi
jne 0x41a63c
push 0x10
call fcn.00492048
mov esi, eax
add esp, 4
cmp esi, edi
je 0x41a5d8
push 0x10000
mov dword [esi + 0xc], edi
call fcn.00490f24
add esp, 4
mov dword [esi + 4], eax
mov dword [esi], eax
cmp eax, edi
jne 0x41a5fb
push esi
call fcn.0049152b
add esp, 4
mov esi, dword [0x4cc498]
xor eax, eax
jmp 0x41a610
push ebx
push 0x4aa17c
mov ecx, 0x4cc518
call fcn.00430bd0
test eax, eax
je 0x41a62d
jmp 0x41a8f0
inc dword [0x4cc4a0]
mov dword [esi + 8], 0x10000
mov dword [0x4cc498], esi
mov eax, esi
mov dword [0x4cc494], eax
cmp eax, edi
jne 0x41a642
mov edx, dword [esp + 0x18]
push edx
push 0x4a76d0
mov ecx, 0x4cc518
call fcn.00430bd0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
mov esi, dword [0x4cc498]
cmp ebx, dword [esi + 8]
jbe 0x41a6a3
push 0x10
call fcn.00492048
mov esi, eax
add esp, 4
cmp esi, edi
je 0x41a679
push 0x10000
mov dword [esi + 0xc], edi
call fcn.00490f24
add esp, 4
mov dword [esi + 4], eax
mov dword [esi], eax
cmp eax, edi
jne 0x41a683
push esi
call fcn.0049152b
add esp, 4
mov esi, dword [0x4cc498]
xor eax, eax
jmp 0x41a698
inc dword [0x4cc4a0]
mov dword [esi + 8], 0x10000
mov dword [0x4cc498], esi
mov eax, esi
mov dword [esi + 0xc], eax
cmp eax, edi
je 0x41a619
mov edi, dword [esi + 4]
mov eax, ebx
and eax, 3
mov dword [0x4cc49c], edi
je 0x41a6b8
sub ebx, eax
add ebx, 4
mov eax, ebx
sub dword [esi + 8], eax
lea ecx, [edi + eax]
mov dword [esi + 4], ecx
test edi, edi
je 0x41a619
cmp dword [esp + 0x58], 0
je 0x41a6e1
mov edx, dword [esp + 0x18]
push ebp
push edx
push edi
call fcn.00498a60
add esp, 0xc
xor eax, eax
mov word [edi + ebp], ax
jmp 0x41a6f4
mov esi, dword [0x4cc498]
mov edi, 0x4a48a0
cmp dword [0x4cc494], 0
jne 0x41a75f
push 0x10
call fcn.00492048
mov esi, eax
add esp, 4
test esi, esi
je 0x41a733
push 0x10000
mov dword [esi + 0xc], 0
call fcn.00490f24
add esp, 4
mov dword [esi + 4], eax
mov dword [esi], eax
test eax, eax
jne 0x41a73d
push esi
call fcn.0049152b
add esp, 4
mov esi, dword [0x4cc498]
xor eax, eax
jmp 0x41a752
inc dword [0x4cc4a0]
mov dword [esi + 8], 0x10000
mov dword [0x4cc498], esi
mov eax, esi
mov dword [0x4cc494], eax
test eax, eax
je 0x41a802
cmp dword [esi + 8], 0x14
jae 0x41a7c1
push 0x10
call fcn.00492048
mov esi, eax
add esp, 4
test esi, esi
je 0x41a79b
push 0x10000
mov dword [esi + 0xc], 0
call fcn.00490f24
add esp, 4
mov dword [esi + 4], eax
mov dword [esi], eax
test eax, eax
jne 0x41a7a5
push esi
call fcn.0049152b
add esp, 4
mov esi, dword [0x4cc498]
xor eax, eax
jmp 0x41a7ba
inc dword [0x4cc4a0]
mov dword [esi + 8], 0x10000
mov dword [0x4cc498], esi
mov eax, esi
mov dword [esi + 0xc], eax
test eax, eax
je 0x41a802
mov eax, dword [esi + 4]
add dword [esi + 8], 0xffffffec
lea ecx, [eax + 0x14]
mov dword [0x4cc49c], eax
mov dword [esi + 4], ecx
test eax, eax
je 0x41a802
xor ecx, ecx
mov dword [eax], vtable.Label.0
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov ebx, 0x4cc518
mov edx, dword [ebx + 0x14]
mov dword [eax + 0xc], edx
mov esi, eax
cmp dword [ebx + 0x10], ecx
jne 0x41a811
mov dword [ebx + 0x10], eax
jmp 0x41a817
push 0x4a48a0
push 0x4a76d0
jmp 0x41a5e8
mov ecx, dword [ebx + 0x14]
mov dword [ecx + 0x10], eax
push 0x4aa1a0
push edi
mov dword [ebx + 0x14], eax
call fcn.00490e99
add esp, 8
test eax, eax
jne 0x41a8f0
mov dword [ebx + 0xa8c], esi
jmp 0x41a8f0
cmp word [ebx], 0x23
jne 0x41a877
mov edi, 0x4cc518
mov esi, dword [edi + 0x274]
push ebx
call fcn.0041b1b0
test eax, eax
je 0x41a62d
cmp eax, 3
jne 0x41a877
mov edx, dword [esp + 0x1a194]
mov dword [edi + 0x270], edx
mov dword [edi + 0x274], esi
jmp 0x41a8f0
movzx eax, word [ebx]
cmp eax, 0x7b
je 0x41a8a5
cmp eax, 0x7d
je 0x41a8a5
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
mov ecx, 0x4cc518
call fcn.0041c940
test eax, eax
je 0x41a62d
jmp 0x41a8f0
cmp eax, 0x7b
push 0
setne al
add al, 0x75
push 0
movzx ecx, al
push 0
push ecx
mov eax, 0x4cc518
push eax
call fcn.0041eef0
test eax, eax
je 0x41a62d
lea eax, [ebx + 2]
lea ecx, [ecx]
movzx ecx, word [eax]
cmp ecx, 0x20
je 0x41a8dd
cmp ecx, 9
jne 0x41a8e2
add eax, 2
jmp 0x41a8d0
cmp word [eax], 0
mov dword [esp + 0x18], eax
jne 0x41aa61
cmp byte [esp + 0x17], 0
je case.0x41a919.4
mov bl, byte [esp + 0x2d]
mov eax, dword [esp + 0x50]
inc eax
mov dword [esp + 0x50], eax
dec eax
cmp eax, 9
ja case.0x41a919.4
movzx edx, byte [eax + 0x41afc4]
jmp dword [edx*4 + 0x41afb0]
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0xf0]
push eax
push 0x4a9c30
push ecx
call fcn.00491426
add esp, 0xc
mov dword [esp + 0x20], eax
jmp 0x419a5d
mov edi, dword [esp + 0x18]
mov eax, 0x4a7340
mov edx, edi
sub edx, eax
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x41a950
push 0
test bl, bl
setne al
add al, 0xc3
push 1
movzx ecx, al
lea edx, [esp + 0x20]
push edx
push ecx
mov eax, 0x4cc518
push eax
call fcn.0041eef0
cmp byte [esp + 0x33], 0
je 0x41a9b0
lea edx, [esp + 0xb0]
push edx
push 0x4a9c3c
push edi
call fcn.00491426
add esp, 0xc
mov dword [esp + 0x20], eax
mov dword [esp + 0x50], 9
jmp 0x419a5d
mov edi, dword [esp + 0x18]
mov al, byte [esp + 0x17]
mov ecx, 0x4a48a0
cmp al, 0x12
je 0x41a9c5
cmp al, 0xa3
jbe 0x41a9e5
cmp al, 0xa5
ja 0x41a9e5
movzx eax, byte [esp + 0x27]
sub eax, 0x11
je 0x41a9e0
sub eax, 0x91
je 0x41a9e0
dec eax
jne 0x41a9e5
mov ecx, 0x4a9c88
jmp 0x41a9e5
mov ecx, 0x4a9c70
lea eax, [esp + 0xb0]
push eax
lea edx, [esp + 0x84]
push edx
push ecx
push 0x4a9ca0
mov esi, 0x4cc518
xor ebx, ebx
push edi
mov dword [esi + 0x634], ebx
call fcn.00491426
add esp, 0x14
push ebx
push 1
lea eax, [esp + 0x20]
push eax
push 0x41
push esi
call fcn.0041eef0
test eax, eax
je 0x41a62d
push ebx
push ebx
push ebx
push 0x67
push esi
call fcn.0041eef0
lea ecx, [esp + 0xf0]
push ecx
push 0x4a9ccc
push edi
mov dword [esi + 0x634], ebx
call fcn.00491426
add esp, 0xc
mov dword [esp + 0x20], eax
mov dword [esp + 0x50], 2
jmp 0x419a5d
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41aa64
sub eax, edx
sar eax, 1
mov dword [esp + 0x20], eax
mov eax, 0x4cc518
mov dword [eax + 0x634], 0
jmp 0x4194d8
mov edi, dword [esp + 0x18]
mov eax, 0x4a7340
mov edx, edi
sub edx, eax
jmp 0x41aaa0
movzx ecx, word [eax]
mov word [eax + edx], cx
add eax, 2
test cx, cx
jne 0x41aaa0
push 0
test bl, bl
setne al
push 1
add al, 0xc3
lea edx, [esp + 0x20]
movzx ecx, al
push edx
push ecx
mov esi, 0x4cc518
push esi
call fcn.0041eef0
lea edx, [esp + 0xb0]
push edx
push 0x4a9cdc
push edi
call fcn.00491426
add esp, 0xc
push 0
push 1
lea eax, [esp + 0x20]
push eax
push 0x41
push esi
call fcn.0041eef0
push 0
push 0
push 0
push 0x67
push esi
call fcn.0041eef0
mov byte [esp + 0x17], 0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0x230]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ecx
cmp eax, edx
jne 0x41ab33
lea eax, [esp + 0x12180]
mov dword [esp + 0x34], eax
jmp 0x418a70
lea ecx, [esp + 0x230]
mov dword [esp + 0x34], ecx
jmp 0x418a70
push ebx
push 0x4a97f0
mov ecx, 0x4cc518
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
lea eax, [esp + 0x8238]
push eax
push 0x4a98b8
mov ecx, esi
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
cmp dword [esi + 0x268], 0
mov eax, 0x4a98b8
jne 0x41ab94
mov eax, 0x4a98d0
lea ecx, [esp + 0x8238]
push ecx
push eax
mov ecx, esi
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push edx
push 0x4a9870
mov ecx, esi
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push edi
push 0x4a9948
mov ecx, 0x4cc518
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebx
push 0x4a98d0
mov ecx, 0x4cc518
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebx
push 0x4a9990
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebx
push 0x4a99fc
mov dword [ecx + 0x634], eax
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebp
push 0x4a9a40
mov ecx, ebx
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
mov ecx, 0x3a
push ebp
mov word [esi - 4], cx
push 0x4a9a98
mov ecx, ebx
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebp
mov edx, 0x3a
push 0x4a9a98
mov ecx, ebx
mov word [edi - 4], dx
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebp
mov ecx, 0x4cc518
push 0x4a9ae4
mov dword [ecx + 0x634], 0
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebp
push 0x4a76d0
mov ecx, esi
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push ebx
push 0x4a9bd0
mov ecx, 0x4cc518
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
mov eax, dword [esp + 0x18]
push eax
push 0x4a9854
mov ecx, 0x4cc518
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
cmp word [esp + 0x8238], 0
je 0x41ad9c
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0x4c]
mov edi, 0x4cc518
mov esi, dword [edi + 0x274]
mov dword [edi + 0x274], ecx
je 0x41ad73
cmp byte [esp + 0x1f], 0
mov eax, 0x4a9cfc
jne 0x41ad56
mov eax, 0x4a98b8
lea edx, [esp + 0x8238]
push edx
push eax
mov ecx, edi
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
push 0
push 0
push 0
push 0
push 0
push 3
lea eax, [esp + 0x8250]
push eax
mov ecx, edi
call fcn.0041c940
test eax, eax
je 0x41a62d
mov dword [edi + 0x274], esi
mov ecx, 0x4cc518
cmp dword [ecx + 0x4c], 0
je 0x41adcc
cmp dword [esp + 0x1a194], 0
jne 0x41adcc
lea edx, [ecx + 0x64]
push edx
push 0x4a9cfc
call fcn.00430bd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a17c
ret 8
pop edi
pop esi
mov eax, 1
add dword [ecx + 0x274], eax
pop ebp
pop ebx
add esp, 0x1a17c
ret 8