Function at 0x4701d0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
mov dword [ebp - 0x10], ecx
call fcn.00420ff0
mov esi, eax
lea edi, [esi + 0x1c]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 0x34]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [eax + 0x20], 0
jbe 0x470210
dec dword [eax + 0x20]
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 8], eax
call edi
jmp 0x47021a
call edi
mov eax, dword [esi + 0x3c]
call eax
mov dword [ebp - 8], eax
call fcn.00407db0
mov ebx, eax
lea eax, [ebx + 0x1c]
push eax
mov dword [ebp - 0xc], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [ebx + 0x34]
cmp dword [esi + 0x20], 0
jbe 0x47024b
dec dword [esi + 0x20]
mov eax, dword [esi + 0x20]
mov esi, dword [esi + 0x1c]
mov esi, dword [esi + eax*4]
mov eax, dword [ebp - 0xc]
push eax
call edi
jmp 0x470258
lea eax, [ebx + 0x1c]
push eax
call edi
mov eax, dword [ebx + 0x3c]
call eax
mov esi, eax
mov eax, dword [ebp - 8]
mov ecx, eax
mov ebx, dword [ebp - 0x10]
add eax, 0x14
neg ecx
push 0
sbb ecx, ecx
mov edi, dword [ebx]
and ecx, eax
push ecx
push dword [ebp + 8]
mov ecx, ebx
call dword [edi + 0x30]
push eax
mov eax, dword [edi + 0x40]
mov ecx, ebx
call eax
mov bl, al
mov byte [ebp + 0xb], bl
test bl, bl
je 0x470e54
mov ebx, dword [ebp - 8]
mov edx, dword [ebx + 0x10]
lea ecx, [ebx + 0x10]
call dword [edx + 0x1c]
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x30]
shr eax, 3
xor ecx, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], ecx
test eax, eax
je 0x470e20
mov eax, dword [ebx + 0x1c]
push 0x5c869c
movzx ebx, word [eax + ecx]
movzx edi, word [eax + ecx + 2]
movzx eax, word [eax + ecx + 4]
add ecx, 8
mov dword [ebp - 0x10], eax
mov eax, dword [esi]
mov dword [ebp - 0x18], ecx
mov ecx, esi
call dword [eax + 0x1e0]
mov al, bl
and al, 1
mov byte [ebp - 1], al
test bl, 0x10
je 0x4702f5
mov eax, dword [esi]
mov ecx, esi
push str.Alt_
call dword [eax + 0x1e0]
test bl, 8
je 0x470309
mov eax, dword [esi]
mov ecx, esi
push str.Ctrl_
call dword [eax + 0x1e0]
test bl, 4
je 0x47031d
mov eax, dword [esi]
mov ecx, esi
push str.Shift_
call dword [eax + 0x1e0]
cmp byte [ebp - 1], 0
jne 0x470338
mov eax, dword [esi]
mov ecx, esi
push edi
call dword [eax + 0xe4]
push 0x5c86d0
jmp 0x470db7
cmp edi, 1
jne 0x470347
push str.Left_mouse_button
jmp 0x470db7
cmp edi, 2
jne 0x470356
push str.Right_mouse_button
jmp 0x470db7
cmp edi, 3
jne 0x470365
push str.Control_break_processing
jmp 0x470db7
cmp edi, 4
jne 0x470374
push str.Middle_mouse_button__three_button_mouse_
jmp 0x470db7
cmp edi, 5
jne 0x470383
push str.X1_mouse_button
jmp 0x470db7
cmp edi, 6
jne 0x470392
push str.X2_mouse_button
jmp 0x470db7
cmp edi, 8
jne 0x4703a1
push str.BACKSPACE_key
jmp 0x470db7
cmp edi, 9
jne 0x4703b0
push str.TAB_key
jmp 0x470db7
cmp edi, 0xc
jne 0x4703bf
push str.CLEAR_key
jmp 0x470db7
cmp edi, 0xd
jne 0x4703ce
push str.ENTER_key
jmp 0x470db7
cmp edi, 0x10
jne 0x4703dd
push str.SHIFT_key
jmp 0x470db7
cmp edi, 0x11
jne 0x4703ec
push str.CTRL_key
jmp 0x470db7
cmp edi, 0x12
jne 0x4703fb
push str.ALT_key
jmp 0x470db7
cmp edi, 0x13
jne 0x47040a
push str.PAUSE_key
jmp 0x470db7
cmp edi, 0x14
jne 0x470419
push str.CAPS_LOCK_key
jmp 0x470db7
cmp edi, 0x15
jne 0x470428
push str.IME_Kana_mode
jmp 0x470db7
cmp edi, 0x17
jne 0x470437
push str.IME_Junja_mode
jmp 0x470db7
cmp edi, 0x18
jne 0x470446
push str.IME_final_mode
jmp 0x470db7
cmp edi, 0x19
jne 0x470455
push str.IME_Hanja_mode
jmp 0x470db7
cmp edi, 0x1b
jne 0x470464
push str.ESC_key
jmp 0x470db7
cmp edi, 0x1c
jne 0x470473
push str.IME_convert
jmp 0x470db7
cmp edi, 0x1d
jne 0x470482
push str.IME_nonconvert
jmp 0x470db7
cmp edi, 0x1e
jne 0x470491
push str.IME_accept
jmp 0x470db7
cmp edi, 0x1f
jne 0x4704a0
push str.IME_mode_change_request
jmp 0x470db7
cmp edi, 0x20
jne 0x4704af
push str.SPACEBAR
jmp 0x470db7
cmp edi, 0x21
jne 0x4704be
push str.PAGE_UP_key
jmp 0x470db7
cmp edi, 0x22
jne 0x4704cd
push str.PAGE_DOWN_key
jmp 0x470db7
cmp edi, 0x23
jne 0x4704dc
push str.END_key
jmp 0x470db7
cmp edi, 0x24
jne 0x4704eb
push str.HOME_key
jmp 0x470db7
cmp edi, 0x25
jne 0x4704fa
push str.LEFT_ARROW_key
jmp 0x470db7
cmp edi, 0x26
jne 0x470509
push str.UP_ARROW_key
jmp 0x470db7
cmp edi, 0x27
jne 0x470518
push str.RIGHT_ARROW_key
jmp 0x470db7
cmp edi, 0x28
jne 0x470527
push str.DOWN_ARROW_key
jmp 0x470db7
cmp edi, 0x29
jne 0x470536
push str.SELECT_key
jmp 0x470db7
cmp edi, 0x2a
jne 0x470545
push str.PRINT_key
jmp 0x470db7
cmp edi, 0x2b
jne 0x470554
push str.EXECUTE_key
jmp 0x470db7
cmp edi, 0x2c
jne 0x470563
push str.PRINT_SCREEN_key
jmp 0x470db7
cmp edi, 0x2d
jne 0x470572
push str.INS_key
jmp 0x470db7
cmp edi, 0x2e
jne 0x470581
push str.DEL_key
jmp 0x470db7
cmp edi, 0x2f
jne 0x470590
push str.HELP_key
jmp 0x470db7
cmp edi, 0x30
jne 0x47059f
push str.0_key
jmp 0x470db7
cmp edi, 0x31
jne 0x4705ae
push str.1_key
jmp 0x470db7
cmp edi, 0x32
jne 0x4705bd
push str.2_key
jmp 0x470db7
cmp edi, 0x33
jne 0x4705cc
push str.3_key
jmp 0x470db7
cmp edi, 0x34
jne 0x4705db
push str.4_key
jmp 0x470db7
cmp edi, 0x35
jne 0x4705ea
push str.5_key
jmp 0x470db7
cmp edi, 0x36
jne 0x4705f9
push str.6_key
jmp 0x470db7
cmp edi, 0x37
jne 0x470608
push str.7_key
jmp 0x470db7
cmp edi, 0x38
jne 0x470617
push str.8_key
jmp 0x470db7
cmp edi, 0x39
jne 0x470626
push str.9_key
jmp 0x470db7
cmp edi, 0x41
jne 0x470635
push str.A_key
jmp 0x470db7
cmp edi, 0x42
jne 0x470644
push str.B_key
jmp 0x470db7
cmp edi, 0x43
jne 0x470653
push str.C_key
jmp 0x470db7
cmp edi, 0x44
jne 0x470662
push str.D_key
jmp 0x470db7
cmp edi, 0x45
jne 0x470671
push str.E_key
jmp 0x470db7
cmp edi, 0x46
jne 0x470680
push str.F_key
jmp 0x470db7
cmp edi, 0x47
jne 0x47068f
push str.G_key
jmp 0x470db7
cmp edi, 0x48
jne 0x47069e
push str.H_key
jmp 0x470db7
cmp edi, 0x49
jne 0x4706ad
push str.I_key
jmp 0x470db7
cmp edi, 0x4a
jne 0x4706bc
push str.J_key
jmp 0x470db7
cmp edi, 0x4b
jne 0x4706cb
push str.K_key
jmp 0x470db7
cmp edi, 0x4c
jne 0x4706da
push str.L_key
jmp 0x470db7
cmp edi, 0x4d
jne 0x4706e9
push str.M_key
jmp 0x470db7
cmp edi, 0x4e
jne 0x4706f8
push str.N_key
jmp 0x470db7
cmp edi, 0x4f
jne 0x470707
push str.O_key
jmp 0x470db7
cmp edi, 0x50
jne 0x470716
push str.P_key
jmp 0x470db7
cmp edi, 0x51
jne 0x470725
push str.Q_key
jmp 0x470db7
cmp edi, 0x52
jne 0x470734
push str.R_key
jmp 0x470db7
cmp edi, 0x53
jne 0x470743
push str.S_key
jmp 0x470db7
cmp edi, 0x54
jne 0x470752
push str.T_key
jmp 0x470db7
cmp edi, 0x55
jne 0x470761
push str.U_key
jmp 0x470db7
cmp edi, 0x56
jne 0x470770
push str.V_key
jmp 0x470db7
cmp edi, 0x57
jne 0x47077f
push str.W_key
jmp 0x470db7
cmp edi, 0x58
jne 0x47078e
push str.X_key
jmp 0x470db7
cmp edi, 0x59
jne 0x47079d
push str.Y_key
jmp 0x470db7
cmp edi, 0x5a
jne 0x4707ac
push str.Z_key
jmp 0x470db7
cmp edi, 0x5b
jne 0x4707bb
push str.Left_Windows_key
jmp 0x470db7
cmp edi, 0x5c
jne 0x4707ca
push str.Right_Windows_key
jmp 0x470db7
cmp edi, 0x5d
jne 0x4707d9
push str.Applications_key
jmp 0x470db7
cmp edi, 0x5f
jne 0x4707e8
push str.Computer_Sleep_key
jmp 0x470db7
cmp edi, 0x60
jne 0x4707f7
push str.Numeric_keypad_0_key
jmp 0x470db7
cmp edi, 0x61
jne 0x470806
push str.Numeric_keypad_1_key
jmp 0x470db7
cmp edi, 0x62
jne 0x470815
push str.Numeric_keypad_2_key
jmp 0x470db7
cmp edi, 0x63
jne 0x470824
push str.Numeric_keypad_3_key
jmp 0x470db7
cmp edi, 0x64
jne 0x470833
push str.Numeric_keypad_4_key
jmp 0x470db7
cmp edi, 0x65
jne 0x470842
push str.Numeric_keypad_5_key
jmp 0x470db7
cmp edi, 0x66
jne 0x470851
push str.Numeric_keypad_6_key
jmp 0x470db7
cmp edi, 0x67
jne 0x470860
push str.Numeric_keypad_7_key
jmp 0x470db7
cmp edi, 0x68
jne 0x47086f
push str.Numeric_keypad_8_key
jmp 0x470db7
cmp edi, 0x69
jne 0x47087e
push str.Numeric_keypad_9_key
jmp 0x470db7
cmp edi, 0x6a
jne 0x47088d
push str.Multiply_key
jmp 0x470db7
cmp edi, 0x6b
jne 0x47089c
push str.Add_key
jmp 0x470db7
cmp edi, 0x6c
jne 0x4708ab
push str.Separator_key
jmp 0x470db7
cmp edi, 0x6d
jne 0x4708ba
push str.Subtract_key
jmp 0x470db7
cmp edi, 0x6e
jne 0x4708c9
push str.Decimal_key
jmp 0x470db7
cmp edi, 0x6f
jne 0x4708d8
push str.Divide_key
jmp 0x470db7
cmp edi, 0x70
jne 0x4708e7
push str.F1_key
jmp 0x470db7
cmp edi, 0x71
jne 0x4708f6
push str.F2_key
jmp 0x470db7
cmp edi, 0x72
jne 0x470905
push str.F3_key
jmp 0x470db7
cmp edi, 0x73
jne 0x470914
push str.F4_key
jmp 0x470db7
cmp edi, 0x74
jne 0x470923
push str.F5_key
jmp 0x470db7
cmp edi, 0x75
jne 0x470932
push str.F6_key
jmp 0x470db7
cmp edi, 0x76
jne 0x470941
push str.F7_key
jmp 0x470db7
cmp edi, 0x77
jne 0x470950
push str.F8_key
jmp 0x470db7
cmp edi, 0x78
jne 0x47095f
push str.F9_key
jmp 0x470db7
cmp edi, 0x79
jne 0x47096e
push str.F10_key
jmp 0x470db7
cmp edi, 0x7a
jne 0x47097d
push str.F11_key
jmp 0x470db7
cmp edi, 0x7b
jne 0x47098c
push str.F12_key
jmp 0x470db7
cmp edi, 0x7c
jne 0x47099b
push str.F13_key
jmp 0x470db7
cmp edi, 0x7d
jne 0x4709aa
push str.F14_key
jmp 0x470db7
cmp edi, 0x7e
jne 0x4709b9
push str.F15_key
jmp 0x470db7
cmp edi, 0x7f
jne 0x4709c8
push str.F16_key
jmp 0x470db7
cmp edi, 0x80
jne 0x4709da
push str.F17_key
jmp 0x470db7
cmp edi, 0x81
jne 0x4709ec
push str.F18_key
jmp 0x470db7
cmp edi, 0x82
jne 0x4709fe
push str.F19_key
jmp 0x470db7
cmp edi, 0x83
jne 0x470a10
push str.F20_key
jmp 0x470db7
cmp edi, 0x84
jne 0x470a22
push str.F21_key
jmp 0x470db7
cmp edi, 0x85
jne 0x470a34
push str.F22_key
jmp 0x470db7
cmp edi, 0x86
jne 0x470a46
push str.F23_key
jmp 0x470db7
cmp edi, 0x87
jne 0x470a58
push str.F24_key
jmp 0x470db7
cmp edi, 0x90
jne 0x470a6a
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x1e0]
mov eax, dword [esi]
mov ecx, esi
push 0x5bdbd4
call dword [eax + 0x1e0]
mov eax, dword [esi]
mov ecx, esi
push 0x5ca020
call dword [eax + 0x1e0]
push dword [ebp - 0x10]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c8]
push 0x5bdbd4
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1e0]
mov eax, dword [esi]
mov ecx, esi
push 0x5bdbd4
call dword [eax + 0x1e0]
mov eax, dword [ebp - 0xc]
mov ebx, dword [ebp - 8]
inc eax
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x14]
jl 0x4702b1
mov eax, dword [esi]
mov ecx, esi
push 0
push 0
call dword [eax + 0x148]
mov edi, eax
test edi, edi
je 0x470e39
lea eax, [edi + 0x10]
jmp 0x470e3b
xor eax, eax
mov ecx, dword [ebp + 0xc]
push eax
call fcn.004560f0
test edi, edi
je 0x470e51
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
call dword [eax + 4]
mov bl, byte [ebp + 0xb]
mov eax, dword [ebp - 8]
test eax, eax
je 0x470e63
lea ecx, [eax + 8]
mov eax, dword [ecx]
call dword [eax + 4]
test esi, esi
je 0x470e77
lea eax, [esi + 4]
neg esi
sbb esi, esi
and esi, eax
mov ecx, esi
mov eax, dword [esi]
call dword [eax + 4]
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 8