Function at 0x42d470
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x44a4
call fcn.00488480
mov eax, dword [0x4a09d8]
push ebx
push esi
push edi
xor edi, edi
mov dword [esp + 0x18], eax
cmp eax, edi
jne 0x42d4ca
cmp dword [0x4a2bc0], 1
mov dword [0x4a2bc0], edi
sete al
test al, al
mov eax, 0x4900b0
jne 0x42d4b0
mov eax, 0x4916f4
mov ecx, dword [0x4a13a4]
push 1
push edi
push 0xffffffffffffffff
push eax
call fcn.004668b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4a098c]
mov esi, dword [0x4a0994]
mov ebx, dword [0x4a0990]
push 0xff
lea ecx, [esp + 0x1b5]
push edi
push ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], esi
mov dword [0x4a2bc0], edi
mov byte [esp + 0x1bc], 0
call fcn.004812e0
add esp, 0xc
push 0x1ff
lea edx, [esp + 0x2b5]
push edi
push edx
mov byte [esp + 0x2bc], 0
call fcn.004812e0
add esp, 0xc
mov byte [esp + 0x2d], 0
cmp byte [ebx], 0
je 0x42d652
mov byte [esp + 0x2c], 0
mov cl, byte [ebx]
movsx eax, cl
sub eax, 0x7b
je 0x42d577
sub eax, 2
je 0x42d644
push 0
mov byte [esp + 0x30], cl
mov byte [esp + 0x11], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x15]
lea eax, [esp + 0x34]
call fcn.00410f30
add esp, 8
jmp 0x42d609
lea eax, [ebx + 1]
push 0x7d
push eax
mov dword [esp + 0x1c], eax
call fcn.00477c01
mov edi, eax
add esp, 8
test edi, edi
je 0x42d644
mov esi, edi
sub esi, ebx
dec esi
jne 0x42d5aa
cmp byte [edi + 1], 0x7d
jne 0x42d644
inc edi
mov esi, 1
push 0
mov byte [edi], 0
mov byte [esp + 0x11], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov ebx, dword [esp + 0x14]
push 1
mov ecx, eax
push 1
lea edx, [esp + 0x15]
mov eax, ebx
call fcn.00410f30
add esp, 8
mov byte [esp + 0xe], al
test al, al
je 0x42d5e7
cmp esi, 1
jne 0x42d600
mov al, byte [ebx]
mov byte [esp + 0x2c], al
jmp 0x42d600
mov eax, ebx
call fcn.00410e90
movzx eax, ax
test ax, ax
je 0x42d600
mov ecx, eax
mov byte [esp + ecx + 0x2b0], 1
mov al, byte [esp + 0xe]
mov byte [edi], 0x7d
mov ebx, edi
test al, al
je 0x42d644
movzx edi, al
or byte [esp + edi + 0x1b0], 1
cmp byte [esp + 0x2c], 0
lea edi, [esp + edi + 0x1b0]
je 0x42d644
mov edx, dword [esp + 0x2c]
push edx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x42d644
test byte [esp + 0xd], 0x30
je 0x42d641
or byte [edi], 2
jmp 0x42d644
or byte [edi], 4
inc ebx
cmp byte [ebx], 0
jne 0x42d533
mov esi, dword [esp + 0x20]
mov dword [0x4a2bd8], 0
cmp byte [esi], 0
je 0x42d7ec
cmp dword [0x4a2bd4], 0
jne 0x42d6ab
push 0x1000
call fcn.00476de3
add esp, 4
mov dword [0x4a2bd4], eax
test eax, eax
jne 0x42d6a1
mov ecx, dword [ebp + 8]
push 0x49588a
push 0
push str.Out_of_memory.
call fcn.004296d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [0x4a2bdc], 0x400
mov ebx, dword [ebp + 8]
mov edi, 3
mov ecx, ebx
call fcn.0041d240
inc eax
cmp eax, dword [0x4a2be4]
jbe 0x42d722
mov dword [0x4a2be4], eax
cmp eax, 0x1000
ja 0x42d6d9
mov dword [0x4a2be4], 0x1000
mov eax, dword [0x4a2be0]
test eax, eax
je 0x42d6eb
push eax
call fcn.004785bf
add esp, 4
mov eax, dword [0x4a2be4]
push eax
call fcn.00476de3
add esp, 4
mov dword [0x4a2be0], eax
test eax, eax
jne 0x42d727
push 0x49588a
push eax
push str.Out_of_memory.
mov ecx, ebx
mov dword [0x4a2be4], eax
call fcn.004296d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4a2be0]
mov ecx, dword [0x4a2bd8]
mov edx, dword [0x4a2bd4]
mov dword [edx + ecx*4], eax
cmp byte [esi], 0
mov edi, dword [0x4a2be0]
mov ebx, esi
je 0x42d7cf
mov al, byte [ebx]
cmp al, 0x2c
je 0x42d752
mov byte [edi], al
inc edi
jmp 0x42d7c5
cmp byte [ebx + 1], 0x2c
jne 0x42d75f
mov byte [edi], 0x2c
inc edi
inc ebx
jmp 0x42d7c5
mov byte [edi], 0
mov ecx, dword [0x4a2bd4]
mov eax, dword [0x4a2bd8]
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0
je 0x42d78d
inc eax
mov dword [0x4a2bd8], eax
inc edi
mov dword [ecx + eax*4], edi
mov byte [edi], 0
mov eax, dword [0x4a2bd8]
mov ecx, dword [0x4a2bd4]
cmp byte [ebx + 1], 0
je 0x42d7c5
mov edx, dword [0x4a2bdc]
cmp eax, edx
jb 0x42d7c5
lea eax, [edx*4 + 0x1000]
push eax
push ecx
call fcn.004781b7
add esp, 8
test eax, eax
je 0x42d684
add dword [0x4a2bdc], 0x400
mov dword [0x4a2bd4], eax
inc ebx
cmp byte [ebx], 0
jne 0x42d747
mov byte [edi], 0
mov ecx, dword [0x4a2bd4]
mov edx, dword [0x4a2bd8]
mov eax, dword [ecx + edx*4]
cmp byte [eax], 0
je 0x42d7ec
inc dword [0x4a2bd8]
cmp byte [0x4a0b7c], 0
je 0x42d82a
mov ecx, dword [0x4a0a38]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x42d80f
mov byte [0x4a0b7c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x42d82a
push 1
push 0xffffffffffffffff
call fcn.00401340
add esp, 8
push 0x3fff
xor esi, esi
lea edx, [esp + 0x4b5]
push esi
push edx
mov dword [0x4a2be8], 1
mov word [0x4a2bec], 0
mov byte [esp + 0x4bc], 0
call fcn.004812e0
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x4bc]
add esp, 0xc
mov dword [0x4a2bf0], eax
mov dword [0x4a2bf4], esi
mov dword [0x4a2bf8], 0x3fff
cmp byte [ecx], 0
je 0x42d981
mov ebx, ecx
inc ebx
lea esp, [esp]
movzx edi, byte [ebx - 1]
test edi, 0xffffff80
jne 0x42d8ae
push 2
push edi
call fcn.0047814e
add esp, 8
test eax, eax
je 0x42d8ae
and edi, 0xffffffdf
mov eax, edi
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x42d8c6.43
movzx edx, byte [eax + 0x42e220]
jmp dword [edx*4 + 0x42e1fc]
mov byte [0x4a2be8], 0
jmp case.0x42d8c6.43
mov byte [0x4a2be9], 1
jmp case.0x42d8c6.43
mov byte [0x4a2bea], 1
jmp case.0x42d8c6.43
mov byte [0x4a2beb], 1
jmp case.0x42d8c6.43
push ebx
call fcn.00478196
add esp, 4
mov dword [0x4a2bf8], eax
cmp eax, 0x3fff
jle case.0x42d8c6.43
mov dword [0x4a2bf8], 0x3fff
jmp case.0x42d8c6.43
mov eax, ebx
call fcn.0040c270
test al, al
je 0x42d94e
push 0x10
push 0
push ebx
call fcn.00478a38
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x2c]
add esp, 0xc
fmul qword [0x497bd8]
call fcn.00489fa0
mov esi, eax
jmp case.0x42d8c6.43
push ebx
call fcn.00478b3a
fmul qword [0x497bd8]
add esp, 4
call fcn.00489fa0
mov esi, eax
jmp case.0x42d8c6.43
mov byte [0x4a2bec], 1
jmp case.0x42d8c6.43
mov byte [0x4a2bed], 1
inc ebx
cmp byte [ebx - 1], 0
jne 0x42d890
or byte [0x4a14e0], 1
cmp dword [0x4a0b68], 0
lea eax, [esp + 0x1b0]
lea ecx, [esp + 0x2b0]
mov dword [0x4a2bc4], eax
mov dword [0x4a2bc8], ecx
mov dword [0x4a2bc0], 1
mov byte [0x4a0b5b], 1
jne 0x42d9cd
mov edx, dword [0x49e4e0]
movzx eax, word [edx]
push eax
call fcn.004076d0
add esp, 4
test esi, esi
jle 0x42da10
cmp byte [0x4a0b7c], 0
jne 0x42da10
mov eax, 0xa
cmp esi, 0xa
jl 0x42d9e6
mov eax, esi
mov ecx, dword [0x4a0a38]
push 0x403250
push eax
push 0xc
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne dl
mov byte [0x4a0b7c], dl
jmp 0x42da10
push 1
push 0x8000012f
call fcn.00401340
mov eax, dword [0x4a2bc0]
add esp, 8
cmp eax, 1
je 0x42da10
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x42da35
jmp dword [eax*4 + 0x42e250]
mov ecx, dword [0x4a13a4]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
call fcn.004668b0
jmp 0x42dd17
mov ecx, dword [0x4a13a4]
push 1
push 0
push 0xffffffffffffffff
push str.Match
call fcn.004668b0
jmp 0x42dd17
mov eax, dword [str.EndKey:]
mov ecx, dword [0x4949dc]
push 0x78
lea edx, [esp + 0x3c]
push 0
push edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
call fcn.004812e0
add esp, 0xc
cmp byte [0x4a2bd1], 0
je 0x42db2c
push 0xff
lea eax, [esp + 0xb5]
push 0
push eax
mov byte [esp + 0xbc], 0
call fcn.004812e0
or byte [esp + 0xcc], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x42dadf
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x42dae1
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor ecx, ecx
cmp dword [0x4a0bb0], ecx
push eax
setne cl
lea edx, [esp + 0x3b]
lea eax, [esp + 0xb4]
xor bl, bl
push ecx
movzx ecx, byte [0x4a2bcc]
push edx
push eax
push ecx
call fcn.00411340
movzx edx, ax
movzx eax, byte [0x4a2bcc]
add esp, 4
push edx
push eax
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov byte [esp + eax + 0x37], bl
jmp 0x42db7b
cmp byte [0x4a2bd0], 0
je 0x42db4c
mov cx, word [0x4a2bce]
mov eax, 0x79
lea edx, [esp + 0x37]
call fcn.00410e30
jmp 0x42db7b
mov cl, byte [0x4a2bcc]
xor eax, eax
cmp byte [eax*8 + 0x49e10c], cl
je 0x42db96
inc eax
cmp eax, 0x6d
jl 0x42db54
movzx eax, cl
push 0x79
push eax
mov ax, word [0x4a2bce]
lea esi, [esp + 0x3f]
call fcn.00411260
add esp, 8
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
mov ecx, dword [0x4a13a4]
call fcn.004668b0
jmp 0x42dd17
mov ecx, dword [eax*8 + 0x49e108]
push 0x78
push ecx
lea edx, [esp + 0x3f]
push edx
call fcn.0047a8e0
add esp, 0xc
mov byte [esp + 0xaf], 0
jmp 0x42db7b
mov ecx, dword [0x4a13a4]
push 1
push 0
push 0xffffffffffffffff
push 0x4949e0
call fcn.004668b0
jmp 0x42dd17
mov ebx, dword [0x4a13a4]
cmp byte [ebx + 0x17], 0
jne 0x42dbf6
mov ecx, dword [ebx + 0xc]
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
call fcn.004668b0
jmp 0x42dd17
cmp dword [ebx + 8], str.NewInput
lea eax, [ebx + 8]
mov dword [esp + 0x14], eax
jne 0x42dc34
mov edi, ebx
cmp byte [edi + 0x17], 1
jne 0x42dc27
test byte [edi + 0x15], 8
je 0x42dc1b
mov eax, edi
call fcn.00401150
mov edx, dword [edi + 0xc]
lea eax, [edi + 0xc]
mov dword [esp + 0x10], edx
jmp 0x42dc3c
mov eax, 0x4a3324
mov edx, dword [eax]
mov dword [esp + 0x10], edx
jmp 0x42dc3c
mov dword [esp + 0x10], 8
mov edi, dword [esp + 0x10]
inc edi
cmp byte [ebx + 0x17], 2
jne 0x42dc5a
mov eax, dword [esp + 0x10]
push str.NewInput
call fcn.00403b60
jmp 0x42dd17
mov esi, dword [0x49d330]
cmp edi, esi
jbe 0x42dc7d
push 0x49588a
push str.Memory_limit_reached__see_MaxMem_in_the_help_file_.__The_current_thread_will_exit.
mov ecx, 0x4a2c18
call fcn.00429900
jmp 0x42dd17
cmp edi, 2
jae 0x42dc95
xor al, al
mov edi, 4
mov ecx, ebx
call fcn.00466d70
jmp 0x42dd17
mov al, byte [ebx + 0x15]
test al, 2
je 0x42dcb1
and al, 0x3d
mov byte [ebx + 0x15], al
mov eax, dword [ebx]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [0x49d330]
mov edx, dword [ebx + 0x10]
and byte [ebx + 0x15], 0x86
cmp edi, edx
jbe 0x42dce6
mov cl, byte [ebx + 0x14]
cmp cl, 1
jbe 0x42dd8c
cmp cl, 2
je 0x42ddc3
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
and byte [ebx + 0x15], 0x7f
mov dword [edx], eax
mov dword [ebx + 0x10], edi
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp eax, str.NewInput
je 0x42dd06
mov ecx, dword [esp + 0x10]
push ecx
push str.NewInput
push eax
call fcn.004777f0
add esp, 0xc
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, dword [edx]
mov byte [eax + ecx], 0
mov dword [ebx + 0xc], eax
cmp byte [0x4a0b7c], 0
mov dword [0x4a2bc0], 0
je 0x42dd5f
mov edx, dword [0x4a0a38]
push 0xc
push edx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x42dd44
mov byte [0x4a0b7c], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x42dd5f
push 1
push 0xffffffffffffffff
call fcn.00401340
add esp, 8
mov esi, dword [esp + 0x18]
cmp byte [esi + 0x17], 0
jne 0x42defc
mov ecx, dword [esi + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x4bc]
push eax
call fcn.004668b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x40
ja 0x42ddc3
cmp edi, 4
ja 0x42dd9d
mov edi, 4
jmp 0x42ddab
mov eax, 8
cmp eax, edi
sbb edi, edi
and edi, 0x38
add edi, eax
mov eax, edi
call fcn.00461610
test eax, eax
je 0x42dd17
mov byte [ebx + 0x14], 1
jmp 0x42dcd9
cmp edi, 0x10
jae 0x42ddd2
mov edi, 0x10
jmp 0x42de82
cmp edi, 0x104
jae 0x42dde4
mov edi, 0x104
jmp 0x42de82
cmp edi, 0x28000
jae 0x42de28
mov dword [esp + 0x20], edi
fild dword [esp + 0x20]
test edi, edi
jns 0x42ddfe
fadd qword [0x497ba0]
fmul qword [0x497bb0]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov dword [esp + 0x20], eax
fldcw word [esp + 0x20]
fistp qword [esp + 0x20]
mov edi, dword [esp + 0x20]
fldcw word [esp + 0xe]
jmp 0x42de82
cmp edi, 0x190000
jae 0x42de38
add edi, 0x4000
jmp 0x42de82
cmp edi, 0x640000
jae 0x42de7c
mov dword [esp + 0x20], edi
fild dword [esp + 0x20]
test edi, edi
jns 0x42de52
fadd qword [0x497ba0]
fmul qword [0x497ba8]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov dword [esp + 0x20], eax
fldcw word [esp + 0x20]
fistp qword [esp + 0x20]
mov edi, dword [esp + 0x20]
fldcw word [esp + 0xe]
jmp 0x42de82
add edi, 0x10000
cmp edi, esi
jbe 0x42de88
mov edi, esi
cmp cl, 2
jne 0x42dec3
test edx, edx
je 0x42dec3
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
push edx
mov byte [esp + 0x11], 1
call fcn.004785bf
add esp, 4
cmp edi, 0x7fffffff
ja 0x42deca
push edi
call fcn.00476de3
add esp, 4
test eax, eax
je 0x42deca
mov byte [ebx + 0x14], 2
jmp 0x42dcd9
mov byte [esp + 0xd], 0
jmp 0x42dea5
cmp byte [esp + 0xd], 0
je 0x42dee3
mov ecx, dword [esp + 0x14]
xor eax, eax
mov dword [ebx + 0x10], eax
mov dword [ecx], 0x4a2ba4
mov dword [ebx + 0xc], eax
push 0x49588a
push str.Out_of_memory.__The_current_thread_will_exit.
mov ecx, 0x4a2c18
call fcn.00429900
jmp 0x42dd17
lea ecx, [esp + 0x4b0]
cmp dword [esi + 8], ecx
jne 0x42df34
cmp byte [esi + 0x17], 1
jne 0x42df27
test byte [esi + 0x15], 8
je 0x42df1b
mov eax, esi
call fcn.00401150
mov ebx, dword [esi + 0xc]
lea eax, [esi + 0xc]
mov dword [esp + 0x10], ebx
jmp 0x42df4f
mov eax, 0x4a3324
mov ebx, dword [eax]
mov dword [esp + 0x10], ebx
jmp 0x42df4f
lea eax, [esp + 0x4b0]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42df40
sub eax, edx
mov ebx, eax
mov dword [esp + 0x10], eax
cmp byte [esi + 0x17], 2
lea edi, [ebx + 1]
jne 0x42dfce
cmp dword [0x4a2c08], 0
mov ebx, dword [esp + 0x10]
jne 0x42e0b3
cmp ebx, 0xffffffff
jne 0x42df83
lea eax, [esp + 0x4b0]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42df78
sub eax, edx
mov ebx, eax
test ebx, ebx
je 0x42dfb9
lea edi, [ebx + 1]
mov esi, 0x4a2bfc
call fcn.00403be0
test eax, eax
je 0x42e0b3
mov eax, dword [0x4a2c08]
push ebx
lea edx, [esp + 0x4b4]
push edx
push eax
mov esi, eax
call fcn.0047a8e0
add esp, 0xc
mov byte [esi + ebx], 0
push 1
mov ecx, 0x4a2bfc
call fcn.00403c50
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edi, dword [0x49d330]
jbe 0x42dff3
push 0x49588a
push str.Memory_limit_reached__see_MaxMem_in_the_help_file_.__The_current_thread_will_exit.
mov ecx, 0x4a2c18
call fcn.00429900
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edi, 2
jae 0x42e012
xor al, al
mov edi, 4
mov ecx, esi
call fcn.00466d70
lea eax, [edi - 3]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [esi + 0x15]
test al, 2
je 0x42e028
and al, 0x3d
mov byte [esi + 0x15], al
mov eax, dword [esi]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov edx, dword [esi + 0x10]
and byte [esi + 0x15], 0x86
cmp edi, edx
jbe 0x42e056
mov cl, byte [esi + 0x14]
cmp cl, 1
jbe 0x42e089
cmp cl, 2
je 0x42e0c4
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
and byte [esi + 0x15], 0x7f
mov dword [esi + 8], eax
mov dword [esi + 0x10], edi
mov eax, dword [esi + 8]
lea edx, [esp + 0x4b0]
cmp eax, edx
je 0x42e071
push ebx
mov ecx, edx
push ecx
push eax
call fcn.004777f0
add esp, 0xc
mov edx, dword [esi + 8]
mov byte [ebx + edx], 0
mov dword [esi + 0xc], ebx
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x40
ja 0x42e0c4
cmp edi, 4
ja 0x42e09a
mov edi, 4
jmp 0x42e0a8
mov eax, 8
cmp eax, edi
sbb edi, edi
and edi, 0x38
add edi, eax
mov eax, edi
call fcn.00461610
test eax, eax
jne 0x42e0be
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov byte [esi + 0x14], 1
jmp 0x42e04c
cmp edi, 0x10
jae 0x42e0d3
mov edi, 0x10
jmp 0x42e183
cmp edi, 0x104
jae 0x42e0e5
mov edi, 0x104
jmp 0x42e183
cmp edi, 0x28000
jae 0x42e129
mov dword [esp + 0x18], edi
fild dword [esp + 0x18]
test edi, edi
jns 0x42e0ff
fadd qword [0x497ba0]
fmul qword [0x497bb0]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov edi, dword [esp + 0x18]
fldcw word [esp + 0xe]
jmp 0x42e183
cmp edi, 0x190000
jae 0x42e139
add edi, 0x4000
jmp 0x42e183
cmp edi, 0x640000
jae 0x42e17d
mov dword [esp + 0x18], edi
fild dword [esp + 0x18]
test edi, edi
jns 0x42e153
fadd qword [0x497ba0]
fmul qword [0x497ba8]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov edi, dword [esp + 0x18]
fldcw word [esp + 0xe]
jmp 0x42e183
add edi, 0x10000
mov eax, dword [0x49d330]
cmp edi, eax
jbe 0x42e18e
mov edi, eax
cmp cl, 2
jne 0x42e1c7
test edx, edx
je 0x42e1c7
mov ecx, dword [esi + 8]
push ecx
mov bl, 1
call fcn.004785bf
add esp, 4
cmp edi, 0x7fffffff
ja 0x42e1cb
push edi
call fcn.00476de3
add esp, 4
test eax, eax
je 0x42e1cb
mov ebx, dword [esp + 0x10]
mov byte [esi + 0x14], 2
jmp 0x42e04c
xor bl, bl
jmp 0x42e1a5
test bl, bl
je 0x42e1de
xor eax, eax
mov dword [esi + 0x10], eax
mov dword [esi + 8], 0x4a2ba4
mov dword [esi + 0xc], eax
push 0x49588a
push str.Out_of_memory.__The_current_thread_will_exit.
mov ecx, 0x4a2c18
call fcn.00429900
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4