Function at 0x46a752
Capabilities:
Get common file path

Disassembly:
mov eax, 0x4c1688
call fcn.00483820
sub esp, 0x280
push ebx
push esi
push edi
mov ebx, ecx
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x30], ebx
call fcn.004b563d
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x14]
push dword [eax + 0x90]
call fcn.0049b86d
xor edi, edi
push 0x2e
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], edi
call fcn.004938c0
cmp eax, 0xffffffff
je 0x46a7da
inc eax
lea ecx, [ebp - 0x14]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00493848
push 0x4e954c
push eax
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 1
push eax
call fcn.0049ba48
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 2
call fcn.0049b8ec
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 1
call fcn.0049b7ff
and byte [ebp - 4], 0
lea ecx, [ebp - 0x20]
jmp 0x46a800
lea eax, [ebp - 0x14]
push str..kbd
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0049ba48
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 3
call fcn.0049b8ec
and byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.0049b7ff
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.0049bc7a
cmp eax, 0xffffffff
jne 0x46a886
lea eax, [ebp - 0x174]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
cmp byte [ebp - 0x174], 0
je 0x46a859
lea eax, [ebp - 0x174]
push eax
call fcn.00483b20
cmp byte [ebp + eax - 0x175], 0x5c
pop ecx
je 0x46a859
lea eax, [ebp - 0x174]
push 0x4e9540
push eax
call fcn.00483900
pop ecx
pop ecx
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x174]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0049babc
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.0049b8ec
and byte [ebp - 4], 0
lea ecx, [ebp - 0x18]
call fcn.0049b7ff
lea eax, [ebp - 0x28c]
push eax
push dword [ebp - 0x14]
call fcn.0049d666
test eax, eax
je 0x46a9ad
cmp dword [0x4f5350], edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], edi
je 0x46a8e6
cmp dword [ebx + 0x48], edi
je 0x46a8e6
mov esi, 0x4b6
push esi
push 0x42
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
cmp eax, edi
mov dword [ebp - 0x24], eax
je 0x46a8eb
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0xc8
push eax
push dword [ebx + 0x48]
mov dword [ebp - 0x2c], eax
call dword [sym.imp.USER32.dll_CopyAcceleratorTableA]
mov dword [ebp - 0x18], eax
jmp 0x46a8eb
mov esi, 0x4b6
push dword [ebp - 0x280]
mov edi, dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push 0x42
call edi
push eax
mov dword [ebp - 0x20], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
mov dword [ebp - 0x1c], eax
je 0x46a9ad
lea ecx, [ebp - 0x40]
call fcn.0049c82d
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 5
call fcn.0049d3ed
push 0
push 0
push dword [ebp - 0x14]
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 7
call fcn.0049c9df
test eax, eax
je 0x46a965
lea eax, [ebp - 0x70]
push 0x24
push eax
lea ecx, [ebp - 0x40]
call fcn.0049cafc
lea eax, [ebp - 0x70]
push str.UE_KBDCONFIG_V4.30
push eax
call fcn.00484860
pop ecx
test eax, eax
pop ecx
jne 0x46a9c8
lea ecx, [ebp - 0x40]
call fcn.0049cbfa
mov dword [ebp - 4], 5
call fcn.0049d42b
cmp dword [ebp - 0x20], 0
je 0x46a989
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [ebp - 0x24], 0
je 0x46a9a1
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
and byte [ebp - 4], 0
lea ecx, [ebp - 0x40]
call fcn.0049c922
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x14]
call fcn.0049b7ff
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret
mov eax, dword [ebp - 0x280]
lea ecx, [ebp - 0x40]
add eax, 0xffffffdc
push eax
push dword [ebp - 0x1c]
call fcn.0049cafc
lea ecx, [ebp - 0x40]
call fcn.0049cbfa
mov eax, dword [0x4f5350]
neg eax
sbb eax, eax
and eax, esi
add eax, esi
cmp dword [ebx + 0x10ca], 0
lea esi, [ebx + 0x10ca]
jne 0x46aa08
push eax
push 0x42
call edi
mov dword [esi], eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ecx, eax
xor eax, eax
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x50]
cmp eax, edx
jge 0x46aa34
mov esi, dword [ebp - 0x1c]
lea edx, [eax + eax*4]
lea esi, [esi + edx*2 + 4]
lea edx, [eax + eax*2]
inc eax
lea edi, [ecx + edx*2]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x46aa17
mov dword [ebx + 0x10d2], edx
cmp dword [0x4f5350], 0
je 0x46aaf6
mov dword [ebp - 0x1c], edx
xor eax, eax
cmp eax, dword [ebp - 0x18]
jge 0x46aab6
xor esi, esi
cmp esi, dword [ebx + 0x10d2]
jge 0x46aa9b
mov edi, dword [ebp - 0x2c]
lea edx, [esi + esi*2]
lea ecx, [ecx + edx*2]
lea edx, [eax + eax*2]
lea edx, [edi + edx*2]
mov di, word [ecx + 4]
cmp di, word [edx + 4]
je 0x46aa8d
mov di, word [ecx + 2]
cmp di, word [edx + 2]
jne 0x46aa84
mov cl, byte [ecx]
cmp cl, byte [edx]
je 0x46aa8d
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
inc esi
jmp 0x46aa53
cmp esi, dword [ebx + 0x10d2]
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
jl 0x46aab3
mov edi, dword [ebp - 0x2c]
lea esi, [eax + eax*2]
lea edx, [edx + edx*2]
inc dword [ebp - 0x1c]
lea esi, [edi + esi*2]
lea edi, [ecx + edx*2]
mov edx, dword [ebp - 0x1c]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
inc eax
jmp 0x46aa4c
cmp dword [ebx + 0x10d2], edx
je 0x46aadd
push edx
push ecx
push ecx
lea eax, [ebp - 0x14]
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
mov dword [ebx + 0x10d2], edx
call fcn.0049b574
call fcn.004032e3
add esp, 0xc
call fcn.004b563d
mov ecx, dword [eax + 4]
push 0
push str.MergeAccelerator
push 0x4ec88c
call fcn.004a36ff
push dword [ebx + 0x48]
call dword [sym.imp.USER32.dll_DestroyAcceleratorTable]
push dword [ebx + 0x10d2]
push dword [ebp - 0x28]
call dword [sym.imp.USER32.dll_CreateAcceleratorTableA]
mov dword [ebx + 0x48], eax
mov ebx, dword [ebx + 0x10ca]
test ebx, ebx
je 0x46a965
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
jmp 0x46a965