Function at 0x4704a0
Capabilities:
Get keyboard layout
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53dc84
mov eax, dword fs:[0]
push eax
sub esp, 0x378
mov eax, dword [0x5bc684]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov dword [ebp - 0x31c], eax
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x360], edi
mov ecx, dword [ebp + 0x20]
mov dword [ebp - 0x358], ecx
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x334], 1
xor edx, edx
cmp edi, edx
je 0x471479
cmp dword [ebp + 0x10], edx
je 0x471479
mov dword [ebp - 4], edx
mov dword [ebp - 0x34c], edx
movzx ebx, byte [edi]
movzx esi, word [edi + 2]
shl esi, 0x10
or esi, 1
mov dword [ebp - 0x370], esi
movzx edx, byte [edi + 1]
mov dword [ebp - 0x324], edx
lea ecx, [ecx + ecx*2]
lea ecx, [eax + ecx*4]
mov dword [ebp - 0x350], ecx
mov dword [ecx], 0
mov dword [ecx + 4], ebx
mov edx, dword [ebp - 0x31c]
mov eax, dword [edx]
mov eax, dword [eax - 8]
mov dword [ecx + 8], eax
mov ecx, dword [0x5bbfe4]
mov dword [ebp - 0x348], ecx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x348]
cmp dword [ebp + 0x14], 0
je 0x470578
push str.par
jmp 0x47057d
push 0x560e54
call fcn.004bfc00
mov byte [ebp - 0x118], 0
push 0x104
lea edx, [ebp - 0x118]
push edx
push esi
call dword [sym.imp.USER32.dll_GetKeyNameTextA]
mov esi, eax
mov dword [ebp - 0x34c], esi
test esi, esi
jne 0x4705e4
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp ebx, 0xa1
jne 0x4705e4
mov esi, 0xb
mov dword [ebp - 0x34c], esi
mov eax, dword [str.Right_Shift]
mov dword [ebp - 0x118], eax
mov ecx, dword [0x56cf94]
mov dword [ebp - 0x114], ecx
mov edx, dword [0x56cf98]
mov dword [ebp - 0x110], edx
mov byte [ebp - 0x15], 0
cmp ebx, 0x10
je 0x470692
cmp ebx, 0xa0
je 0x470692
cmp ebx, 0xa1
je 0x470692
cmp ebx, 0x11
je 0x470682
cmp ebx, 0xa2
je 0x470682
cmp ebx, 0xa3
je 0x470682
cmp ebx, 0x12
je 0x470672
cmp ebx, 0xa4
je 0x470672
cmp ebx, 0xa5
je 0x470672
cmp ebx, 0x5b
jne 0x470648
push 0x40
lea eax, [ebp - 0x118]
push eax
push 0x5bf7c0
jmp 0x4706a0
cmp ebx, 0x5c
jne 0x47065d
push 0x40
lea ecx, [ebp - 0x118]
push ecx
push 0x5bf780
jmp 0x4706a0
cmp ebx, 0x5d
jne 0x4706a8
push 0x40
lea edx, [ebp - 0x118]
push edx
push 0x5bf740
jmp 0x4706a0
push 0x40
lea eax, [ebp - 0x118]
push eax
push 0x5bf700
jmp 0x4706a0
push 0x40
lea ecx, [ebp - 0x118]
push ecx
push 0x5bf6c0
jmp 0x4706a0
push 0x40
lea edx, [ebp - 0x118]
push edx
push 0x5bf680
call fcn.004bf0a0
add esp, 0xc
test esi, esi
je 0x47144e
mov eax, dword [0x5bbfe4]
mov dword [ebp - 0x330], eax
mov byte [ebp - 4], 2
mov ecx, dword [0x5bbfe4]
mov dword [ebp - 0x340], ecx
mov byte [ebp - 4], 3
mov edx, dword [0x5bbfe4]
mov dword [ebp - 0x344], edx
mov byte [ebp - 4], 4
mov eax, dword [0x5bbfe4]
mov dword [ebp - 0x338], eax
mov byte [ebp - 4], 5
mov ecx, dword [0x5bbfe4]
mov dword [ebp - 0x33c], ecx
mov byte [ebp - 4], 6
mov edx, dword [0x5bbfe4]
mov dword [ebp - 0x36c], edx
mov byte [ebp - 4], 7
mov eax, dword [0x5bbfe4]
mov dword [ebp - 0x328], eax
mov byte [ebp - 4], 8
mov ecx, dword [0x5bbfe4]
mov dword [ebp - 0x35c], ecx
mov byte [ebp - 4], 9
mov edx, dword [0x5bbfe4]
mov dword [ebp - 0x354], edx
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x344]
cmp dword [ebp + 0x14], 0
je 0x47076a
push str.cf2_b0
call fcn.004bfc00
push str.cf0_b
lea ecx, [ebp - 0x338]
call fcn.004bfc00
push str._bullet
jmp 0x470789
push 0x54f15a
call fcn.004bfc00
push 0x54f15a
lea ecx, [ebp - 0x338]
call fcn.004bfc00
push 0x56cf70
lea ecx, [ebp - 0x354]
call fcn.004bfc00
lea eax, [ebp - 0x118]
push eax
lea ecx, [ebp - 0x36c]
call fcn.004bfc00
mov ecx, 1
mov dword [ebp - 0x32c], ecx
mov dword [ebp - 0x368], ecx
mov esi, dword [ebp + 0x18]
lea ebx, [ebx]
cmp ecx, dword [ebp + 0x10]
jae 0x4707f7
mov eax, esi
neg eax
sbb eax, eax
and eax, 0xff00
add eax, 0x1ff00ff
mov edx, dword [edi + ecx*4]
and edx, eax
mov edi, dword [edi]
and edi, eax
cmp edi, edx
jne 0x4707f7
inc dword [ebp - 0x32c]
inc ecx
mov dword [ebp - 0x368], ecx
mov edi, dword [ebp - 0x360]
jmp 0x4707c0
cmp ebx, 0x10
je 0x47084b
cmp ebx, 0xa0
je 0x47084b
cmp ebx, 0xa1
je 0x47084b
cmp ebx, 0x11
je 0x47084b
cmp ebx, 0xa2
je 0x47084b
cmp ebx, 0xa3
je 0x47084b
cmp ebx, 0x12
je 0x47084b
cmp ebx, 0xa4
je 0x47084b
cmp ebx, 0xa5
je 0x47084b
cmp ebx, 0x5b
je 0x47084b
cmp ebx, 0x5c
je 0x47084b
cmp ebx, 0x5d
mov edi, dword [ebp - 0x32c]
jne 0x470850
mov edi, 1
mov eax, dword [ebp + 0x1c]
sub eax, 0
je 0x470bee
sub eax, 2
je 0x470b7f
cmp edi, 1
jbe 0x470881
push edi
push str.:__u
lea eax, [ebp - 0x33c]
push eax
call fcn.004c0960
add esp, 0xc
jmp 0x470891
push 0x54f15a
lea ecx, [ebp - 0x33c]
call fcn.004bfc00
cmp dword [ebp - 0x34c], 1
jne 0x4708b6
test dword [ebp - 0x324], 0xfffffffe
jne 0x4708b6
lea ecx, [ebp - 0x118]
push ecx
call dword [sym.imp.USER32.dll_CharLowerA]
push eax
jmp 0x4708bd
lea edx, [ebp - 0x118]
push edx
lea ecx, [ebp - 0x330]
call fcn.004bfc00
cmp dword [ebp + 0x14], 0
je 0x470993
mov ecx, 0x54f3dc
lea eax, [ebp - 0x118]
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470900
test dl, dl
je 0x4708fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470900
add eax, 2
add ecx, 2
test dl, dl
jne 0x4708e0
xor eax, eax
jmp 0x470905
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x470971
mov ecx, 0x56cf64
lea eax, [ebp - 0x118]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470934
test dl, dl
je 0x470930
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470934
add eax, 2
add ecx, 2
test dl, dl
jne 0x470914
xor eax, eax
jmp 0x470939
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x470971
mov ecx, 0x56cf60
lea eax, [ebp - 0x118]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470968
test dl, dl
je 0x470964
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470968
add eax, 2
add ecx, 2
test dl, dl
jne 0x470948
xor eax, eax
jmp 0x47096d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x470993
push 0x54f3dc
lea ecx, [ebp - 0x330]
call fcn.004bfc00
lea eax, [ebp - 0x118]
push eax
lea ecx, [ebp - 0x330]
call fcn.004bfd50
mov ecx, dword [ebp - 0x338]
push ecx
mov edx, dword [ebp - 0x33c]
push edx
mov eax, dword [ebp - 0x330]
push eax
mov ecx, dword [ebp - 0x344]
push ecx
push str._s__s_s__s
lea edx, [ebp - 0x340]
push edx
call fcn.004c0960
add esp, 0x18
push 0x54f15a
lea ecx, [ebp - 0x320]
call fcn.004c1780
mov byte [ebp - 4], 0xb
test byte [ebp - 0x324], 1
je 0x470a15
cmp ebx, 0x10
je 0x470a15
cmp ebx, 0xa0
je 0x470a15
cmp ebx, 0xa1
je 0x470a15
push 0x5bf680
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
test byte [ebp - 0x324], 2
je 0x470a53
cmp ebx, 0x11
je 0x470a53
cmp ebx, 0xa2
je 0x470a53
cmp ebx, 0xa3
je 0x470a53
push 0x5bf6c0
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
test byte [ebp - 0x324], 4
je 0x470a91
cmp ebx, 0x12
je 0x470a91
cmp ebx, 0xa4
je 0x470a91
cmp ebx, 0xa5
je 0x470a91
push 0x5bf700
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
test byte [ebp - 0x324], 0x40
je 0x470abf
cmp ebx, 0x5b
je 0x470abf
push 0x5bf7c0
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
test byte [ebp - 0x324], 0x20
je 0x470aed
cmp ebx, 0x5c
je 0x470aed
push 0x5bf780
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
test byte [ebp - 0x324], 0x80
je 0x470b1b
cmp ebx, 0x5d
je 0x470b1b
push 0x5bf740
lea ecx, [ebp - 0x320]
call fcn.004bfd50
push 0x562cb8
lea ecx, [ebp - 0x320]
call fcn.004bfd50
cmp dword [ebp - 0x324], 0
je 0x470b34
push 0x54f15a
lea ecx, [ebp - 0x33c]
call fcn.004bfc00
mov eax, dword [ebp - 0x338]
push eax
mov ecx, dword [ebp - 0x33c]
push ecx
mov edx, dword [ebp - 0x330]
push edx
mov eax, dword [ebp - 0x320]
push eax
mov ecx, dword [ebp - 0x344]
push ecx
push str._s__s_s_s__s
lea edx, [ebp - 0x328]
push edx
call fcn.004c0960
add esp, 0x1c
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x320]
call fcn.004bfa40
jmp 0x470d27
lea ecx, [ebp - 0x35c]
call fcn.004c0c60
xor esi, esi
mov dword [ebp - 0x368], esi
cmp esi, edi
jae 0x470bab
lea eax, [ebp - 0x354]
push eax
lea ecx, [ebp - 0x35c]
call fcn.004bfdb0
inc esi
jmp 0x470b8c
mov ecx, dword [ebp - 0x338]
push ecx
mov edx, dword [ebp - 0x35c]
push edx
mov eax, dword [ebp - 0x344]
push eax
push str._s_s_s
lea ecx, [ebp - 0x340]
push ecx
call fcn.004c0960
add esp, 0x14
lea edx, [ebp - 0x340]
push edx
lea ecx, [ebp - 0x328]
call fcn.004bfb70
mov esi, dword [ebp + 0x18]
jmp 0x470d27
push 0x54f15a
lea ecx, [ebp - 0x340]
call fcn.004bfc00
cmp dword [ebp - 0x34c], 1
jne 0x470d17
test dword [ebp - 0x324], 0xfffffffe
jne 0x470d17
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.USER32.dll_CharLowerA]
push eax
lea ecx, [ebp - 0x330]
call fcn.004bfc00
cmp dword [ebp + 0x14], 0
je 0x470d03
mov ecx, 0x54f3dc
lea eax, [ebp - 0x118]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470c70
test dl, dl
je 0x470c6c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470c70
add eax, 2
add ecx, 2
test dl, dl
jne 0x470c50
xor eax, eax
jmp 0x470c75
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x470ce1
mov ecx, 0x56cf64
lea eax, [ebp - 0x118]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470ca4
test dl, dl
je 0x470ca0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470ca4
add eax, 2
add ecx, 2
test dl, dl
jne 0x470c84
xor eax, eax
jmp 0x470ca9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x470ce1
mov ecx, 0x56cf60
lea eax, [ebp - 0x118]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x470cd8
test dl, dl
je 0x470cd4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x470cd8
add eax, 2
add ecx, 2
test dl, dl
jne 0x470cb8
xor eax, eax
jmp 0x470cdd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x470d03
push 0x54f3dc
lea ecx, [ebp - 0x330]
call fcn.004bfc00
lea ecx, [ebp - 0x118]
push ecx
lea ecx, [ebp - 0x330]
call fcn.004bfd50
lea edx, [ebp - 0x330]
push edx
lea ecx, [ebp - 0x328]
call fcn.004bfb70
jmp 0x470d27
push 0x54f15a
lea ecx, [ebp - 0x328]
call fcn.004bfc00
xor edi, edi
cmp esi, edi
jne 0x470eb0
cmp ebx, 0x20
je case.0x470ef0.32
cmp dword [ebp - 0x34c], 1
jne 0x470e68
cmp dword [ebp + 0x14], edi
je 0x470d72
mov al, byte [ebp - 0x118]
cmp al, 0x5c
je 0x470d5e
cmp al, 0x7b
je 0x470d5e
cmp al, 0x7d
jne 0x470d72
push 0x54f3dc
mov esi, dword [ebp - 0x31c]
mov ecx, esi
call fcn.004bfd50
jmp 0x470d78
mov esi, dword [ebp - 0x31c]
push 0x100
push edi
lea eax, [ebp - 0x318]
push eax
call fcn.004ff6f0
add esp, 0xc
mov al, byte [ebp - 0x324]
test al, 1
je 0x470da7
movzx ecx, byte [ebp - 0x308]
or cl, 0x80
mov byte [ebp - 0x308], cl
test al, 2
je 0x470dbb
movzx edx, byte [ebp - 0x307]
or dl, 0x80
mov byte [ebp - 0x307], dl
test al, 4
je 0x470dcf
movzx ecx, byte [ebp - 0x306]
or cl, 0x80
mov byte [ebp - 0x306], cl
test al, 0x40
je 0x470de3
movzx edx, byte [ebp - 0x2bd]
or dl, 0x80
mov byte [ebp - 0x2bd], dl
test al, 0x20
je 0x470df7
movzx ecx, byte [ebp - 0x2bc]
or cl, 0x80
mov byte [ebp - 0x2bc], cl
test al, al
jns 0x470e0b
movzx edx, byte [ebp - 0x2bb]
or dl, 0x80
mov byte [ebp - 0x2bb], dl
push edi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push edi
lea eax, [ebp - 0x360]
push eax
lea ecx, [ebp - 0x318]
push ecx
mov edx, dword [ebp - 0x370]
shr edx, 0x10
movzx eax, dl
push eax
push ebx
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x470e4e
mov ecx, dword [ebp - 0x360]
push ecx
mov ecx, esi
call fcn.004bfd90
jmp 0x4713c7
lea edx, [ebp - 0x118]
push edx
call dword [sym.imp.USER32.dll_CharLowerA]
push eax
mov ecx, esi
call fcn.004bfd50
jmp 0x4713c7
lea eax, [ebp - 0x340]
push eax
mov esi, dword [ebp - 0x31c]
mov ecx, esi
call fcn.004bfdb0
mov ecx, dword [ebp - 0x32c]
mov dword [ebp - 0x334], ecx
mov edx, dword [ebp - 0x350]
mov dword [edx], 1
cmp ebx, 0xd
jne 0x4713c7
lea eax, [ebp - 0x348]
push eax
mov ecx, esi
call fcn.004bfdb0
jmp 0x4713c7
mov eax, ebx
mov dword [ebp - 0x380], eax
cmp ebx, 0xd
je 0x470ecc
cmp ebx, 0x20
je 0x470ecc
cmp ebx, 9
je 0x470ecc
cmp ebx, 8
jne 0x470edd
cmp dword [ebp - 0x324], edi
je 0x470edd
or eax, 0xffffffff
mov dword [ebp - 0x380], eax
add eax, 0xfffffff8
cmp eax, 0x18
ja case.0x470ef0.10
movzx ecx, byte [eax + 0x4714b0]
jmp dword [ecx*4 + 0x47149c]
lea edx, [ebp - 0x348]
push edx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
jmp 0x4713c7
push 0x54f320
mov ecx, dword [ebp - 0x31c]
call fcn.004bfd50
jmp 0x4713c7
push 0x56cf3c
mov ecx, dword [ebp - 0x31c]
call fcn.004bfd50
jmp 0x4713c7
cmp esi, 2
jne 0x47119f
cmp dword [ebp - 0x358], edi
je 0x471040
or edi, 0xffffffff
mov dword [ebp - 0x378], edi
xor edx, edx
mov dword [ebp - 0x374], edx
mov esi, dword [ebp - 0x358]
mov dword [ebp - 0x384], esi
mov ecx, dword [ebp - 0x350]
add ecx, 0xfffffff4
mov dword [ebp - 0x37c], ecx
mov ebx, dword [ebp - 0x32c]
nop
cmp edx, ebx
jae 0x470ff4
test esi, esi
jle 0x470ff4
cmp dword [ecx], 0
je 0x470fb2
mov eax, dword [ecx + 4]
cmp eax, 0x10
je 0x470fd4
cmp eax, 0xa0
je 0x470fd4
cmp eax, 0xa1
je 0x470fd4
cmp eax, 0xd
je 0x470fb2
cmp eax, 0x20
je 0x470fb2
cmp eax, 9
jne 0x470ff4
mov edi, dword [ecx + 8]
mov dword [ebp - 0x378], edi
inc edx
mov dword [ebp - 0x374], edx
dec esi
mov dword [ebp - 0x384], esi
sub ecx, 0xc
mov dword [ebp - 0x37c], ecx
jmp 0x470f80
dec edx
mov dword [ebp - 0x374], edx
inc edx
mov dword [ebp - 0x374], edx
dec esi
mov dword [ebp - 0x384], esi
sub ecx, 0xc
mov dword [ebp - 0x37c], ecx
jmp 0x470f80
cmp edi, 0xffffffff
je 0x471058
push edi
lea eax, [ebp - 0x358]
push eax
mov esi, dword [ebp - 0x31c]
mov ecx, esi
call fcn.004c1440
mov byte [ebp - 4], 0xc
push eax
mov ecx, esi
call fcn.004bfb70
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x358]
call fcn.004bfa40
mov dword [ebp - 0x334], ebx
mov ecx, dword [ebp - 0x350]
mov dword [ecx], 1
jmp 0x4713c7
lea ecx, [ebp - 0x328]
push ecx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
mov ebx, dword [ebp - 0x32c]
mov dword [ebp - 0x334], ebx
mov ecx, dword [ebp - 0x350]
mov dword [ecx], 1
jmp 0x4713c7
push 0x100
push edi
lea edx, [ebp - 0x218]
push edx
call fcn.004ff6f0
add esp, 0xc
mov al, byte [ebp - 0x324]
test al, 1
je 0x47109e
movzx ecx, byte [ebp - 0x208]
or cl, 0x80
mov byte [ebp - 0x208], cl
test al, 2
je 0x4710b2
movzx edx, byte [ebp - 0x207]
or dl, 0x80
mov byte [ebp - 0x207], dl
test al, 4
je 0x4710c6
movzx ecx, byte [ebp - 0x206]
or cl, 0x80
mov byte [ebp - 0x206], cl
test al, 0x40
je 0x4710da
movzx edx, byte [ebp - 0x1bd]
or dl, 0x80
mov byte [ebp - 0x1bd], dl
test al, 0x20
je 0x4710ee
movzx ecx, byte [ebp - 0x1bc]
or cl, 0x80
mov byte [ebp - 0x1bc], cl
test al, al
jns 0x471102
movzx edx, byte [ebp - 0x1bb]
or dl, 0x80
mov byte [ebp - 0x1bb], dl
push edi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push edi
lea eax, [ebp - 0x320]
push eax
lea ecx, [ebp - 0x218]
push ecx
mov edx, dword [ebp - 0x370]
shr edx, 0x10
movzx eax, dl
push eax
push ebx
call dword [sym.imp.USER32.dll_ToAsciiEx]
cmp eax, 1
jne 0x4711ce
test dword [ebp - 0x324], 0xfffffffe
je 0x471159
lea ecx, [ebp - 0x328]
push ecx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
jmp 0x4713c7
mov eax, dword [ebp - 0x320]
cmp dword [ebp + 0x14], edi
je 0x471186
cmp al, 0x5c
je 0x471170
cmp al, 0x7b
je 0x471170
cmp al, 0x7d
jne 0x471186
push 0x54f3dc
mov ecx, dword [ebp - 0x31c]
call fcn.004bfd50
mov eax, dword [ebp - 0x320]
cmp al, 0x20
jb 0x47119f
cmp al, 0x7f
je 0x47119f
push eax
mov ecx, dword [ebp - 0x31c]
call fcn.004bfd90
jmp 0x4713c7
lea edx, [ebp - 0x328]
push edx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
mov eax, dword [ebp - 0x32c]
mov dword [ebp - 0x334], eax
mov ecx, dword [ebp - 0x350]
mov dword [ecx], 1
jmp 0x4713c7
cmp eax, edi
jl 0x4713bb
cmp ebx, 0x10
je 0x471320
cmp ebx, 0xa0
je 0x471320
cmp ebx, 0xa1
je 0x471320
cmp ebx, 0x11
je 0x471320
cmp ebx, 0xa2
je 0x471320
cmp ebx, 0xa3
je 0x471320
cmp ebx, 0x12
je 0x471320
cmp ebx, 0xa4
je 0x471320
cmp ebx, 0xa5
je 0x471320
cmp ebx, 0x5b
je 0x471320
cmp ebx, 0x5c
je 0x471320
cmp ebx, 0x5d
je 0x471320
test dword [ebp - 0x324], 0xfffffffe
je 0x471283
lea edx, [ebp - 0x328]
push edx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
mov edx, dword [ebp - 0x32c]
mov dword [ebp - 0x334], edx
jmp 0x4713bb
cmp ebx, 0xba
je 0x47130f
cmp ebx, 0xbf
je 0x47130f
cmp ebx, 0xc0
je 0x47130f
cmp ebx, 0xdb
je 0x47130f
cmp ebx, 0xdc
je 0x47130f
cmp ebx, 0xdd
je 0x47130f
cmp ebx, 0xde
je 0x47130f
cmp ebx, 0xdf
je 0x47130f
cmp eax, 2
jne 0x4712fd
movzx eax, word [ebp - 0x320]
shr eax, 8
push eax
mov ecx, dword [ebp - 0x31c]
call fcn.004bfd90
mov dword [ebp - 0x32c], 1
mov edx, dword [ebp - 0x32c]
mov dword [ebp - 0x334], edx
jmp 0x4713bb
lea ecx, [ebp - 0x328]
push ecx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
mov edx, dword [ebp - 0x32c]
mov dword [ebp - 0x334], edx
jmp 0x4713bb
mov dword [ebp - 0x364], 1
mov esi, dword [ebp - 0x32c]
cmp dword [ebp + 0x10], esi
jbe 0x4713a3
mov eax, dword [ebp - 0x360]
movzx eax, byte [eax + esi*4 + 1]
cmp ebx, 0x10
je 0x471397
cmp ebx, 0xa0
je 0x471397
cmp ebx, 0xa1
je 0x471397
cmp ebx, 0x11
je 0x47138b
cmp ebx, 0xa2
je 0x47138b
cmp ebx, 0xa3
je 0x47138b
cmp ebx, 0x12
je 0x47137f
cmp ebx, 0xa4
je 0x47137f
cmp ebx, 0xa5
jne 0x4713a3
test al, 4
je 0x4713a3
mov dword [ebp - 0x364], edi
jmp 0x4713b5
test al, 2
je 0x4713a3
mov dword [ebp - 0x364], edi
jmp 0x4713b5
test al, 1
je 0x4713a3
mov dword [ebp - 0x364], edi
jmp 0x4713b5
lea ecx, [ebp - 0x328]
push ecx
mov ecx, dword [ebp - 0x31c]
call fcn.004bfdb0
mov dword [ebp - 0x334], esi
mov edx, dword [ebp - 0x350]
mov dword [edx], 1
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x354]
call fcn.004bfa40
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x35c]
call fcn.004bfa40
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x328]
call fcn.004bfa40
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x36c]
call fcn.004bfa40
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x33c]
call fcn.004bfa40
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x338]
call fcn.004bfa40
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x344]
call fcn.004bfa40
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x340]
call fcn.004bfa40
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x330]
call fcn.004bfa40
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x348]
call fcn.004bfa40
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x334]
jmp 0x47147e
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004fe1f5
mov esp, ebp
pop ebp
ret