Function at 0x44aef0
Capabilities:
Get common file path
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x620
mov eax, dword [0x4bb050]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
push 0x49ed98
push ebx
mov dword [ebp - 0x620], edi
mov dword [edi + 0xa78], eax
call fcn.0045b111
add esp, 8
test eax, eax
je 0x44af65
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44af31
sub ecx, edx
sar ecx, 1
cmp ecx, 0x103
jg 0x44b2a9
mov ecx, edi
sub ecx, ebx
movzx eax, word [ebx]
lea ebx, [ebx + 2]
mov word [ecx + ebx - 2], ax
test ax, ax
jne 0x44af50
jmp 0x44b010
push 0x104
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea edi, [ebp - 0x20c]
add edi, 0xfffffffe
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x44af80
mov eax, dword [0x49b470]
mov esi, ebx
mov dword [edi], eax
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x44af95
lea edi, [ebp - 0x20c]
sub ebx, esi
add edi, 0xfffffffe
nop dword [eax + eax]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x44afb0
mov ecx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44afd3
mov edi, dword [ebp - 0x620]
sub ecx, edx
sar ecx, 1
cmp ecx, 0x103
jg 0x44b2a9
lea ecx, [ebp - 0x20c]
mov edx, edi
mov eax, ecx
sub edx, eax
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx + ecx - 2], ax
test ax, ax
jne 0x44b000
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
mov dword [edi + 0x660], ebx
test ebx, ebx
jne 0x44b02d
mov eax, str.Init:_cant_load_dll_r_n
jmp 0x44b2ae
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.ImeInquire
push ebx
call esi
push str.ImeEscape
push ebx
mov dword [edi + 0x618], eax
call esi
push str.ImeProcessKey
push ebx
mov dword [edi + 0x61c], eax
call esi
push str.ImeSelect
push ebx
mov dword [edi + 0x620], eax
call esi
push str.ImeSetActiveContext
push ebx
mov dword [edi + 0x624], eax
call esi
push str.ImeToAsciiEx
push ebx
mov dword [edi + 0x628], eax
call esi
push str.NotifyIME
push ebx
mov dword [edi + 0x62c], eax
call esi
push str.ImeConfigure
push ebx
mov dword [edi + 0x630], eax
call esi
push str.ImeExtension
push ebx
mov dword [edi + 0x634], eax
call esi
push str.NotifyIMEComMsg
push ebx
mov dword [edi + 0x638], eax
call esi
cmp dword [edi + 0x618], 0
mov dword [edi + 0x63c], eax
je 0x44b2a2
cmp dword [edi + 0x61c], 0
je 0x44b2a2
cmp dword [edi + 0x620], 0
je 0x44b2a2
cmp dword [edi + 0x624], 0
je 0x44b2a2
cmp dword [edi + 0x628], 0
je 0x44b2a2
cmp dword [edi + 0x62c], 0
je 0x44b2a2
cmp dword [edi + 0x630], 0
je 0x44b2a2
cmp dword [edi + 0x638], 0
je 0x44b2a2
push 0x208
lea eax, [ebp - 0x414]
push 0
push eax
call fcn.0045bd20
add esp, 0xc
lea eax, [edi + 0x640]
xorps xmm0, xmm0
lea ecx, [ebp - 0x414]
movups xmmword [eax], xmm0
push 0
movq qword [eax + 0x10], xmm0
push ecx
mov dword [eax + 0x18], 0
push eax
mov eax, dword [edi + 0x618]
call eax
test eax, eax
je 0x44b29b
mov eax, dword [edi + 0x644]
shr eax, 0x13
and al, 1
push 0x208
mov byte [edi + 0x65c], al
lea eax, [ebp - 0x61c]
push 0
push eax
call fcn.0045bd20
add esp, 0xc
lea eax, [ebp - 0x61c]
push eax
mov eax, dword [edi + 0x61c]
push 0x1006
push 0
call eax
cmp byte [edi + 0x65c], 0
lea esi, [edi + 0x208]
je 0x44b1e5
lea eax, [ebp - 0x414]
mov ecx, esi
push eax
call fcn.0044c6d0
mov bl, al
lea ecx, [edi + 0x410]
lea eax, [ebp - 0x61c]
push eax
call fcn.0044c6d0
add esp, 8
jmp 0x44b267
lea ecx, [ebp - 0x414]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x44b1f0
push 0x104
push esi
sub ecx, edx
lea eax, [ebp - 0x414]
push ecx
push eax
push 0
push 0x3a8
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jg 0x44b21c
xor bl, bl
jmp 0x44b224
xor ecx, ecx
mov bl, 1
mov word [esi + eax*2], cx
lea ecx, [ebp - 0x61c]
lea esi, [edi + 0x410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x44b233
push 0x104
push esi
sub ecx, edx
lea eax, [ebp - 0x61c]
push ecx
push eax
push 0
push 0x3a8
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jg 0x44b25f
xor al, al
jmp 0x44b267
xor ecx, ecx
mov word [esi + eax*2], cx
mov al, 1
and bl, al
test bl, bl
je 0x44b29b
mov ecx, edi
call fcn.0044ba30
test eax, eax
jne 0x44b27f
mov eax, str.Init:_cant_create_imc_r_n
jmp 0x44b2ae
mov byte [edi + 0x65d], 1
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045a329
mov esp, ebp
pop ebp
ret 8
mov eax, str.Init:_imeinquire_fail_r_n
jmp 0x44b2ae
mov eax, str.Init:_ime_init_fail_r_n
jmp 0x44b2ae
mov eax, 0x49e850
mov ecx, edi
mov edx, 0x660
push eax
lea esi, [edx + ecx]
call fcn.00453330
mov eax, dword [edi + 0x664]
add esp, 4
test eax, eax
je 0x44b2d2
push eax
call dword [sym.imp.IMM32.dll_ImmDestroyContext]
mov ecx, edi
mov dword [esi], 0
call fcn.0044b300
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0045a329
mov esp, ebp
pop ebp
ret 8