Function at 0x4323a0
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x44e0
call fcn.00491ff0
mov eax, dword [0x4ab1e8]
push ebx
push esi
push edi
xor edi, edi
mov dword [ebp - 0x10], eax
cmp eax, edi
jne 0x4323ef
cmp dword [0x4ac350], 1
mov edx, dword [ebp + 8]
sete al
test al, al
sete al
movzx ecx, al
push ecx
push edx
mov dword [0x4ac350], edi
call fcn.0042d950
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4ab24c]
mov ebx, dword [0x4ab244]
mov esi, dword [0x4ab248]
mov dword [ebp - 0x28], eax
mov dword [0x4ac350], edi
mov dword [0x4ac37c], 1
mov word [0x4ac380], di
mov dword [0x4ac38c], 0x3fff
mov al, byte [ebx]
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], edi
mov byte [ebp - 6], 0
test al, al
je 0x432500
lea edi, [ebx + 1]
jmp 0x432440
movzx esi, al
test esi, 0xffffff80
jne 0x43245d
push 2
push esi
call fcn.00486d5e
add esp, 8
test eax, eax
je 0x43245d
and esi, 0xffffffdf
mov eax, esi
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x432475.43
movzx ecx, byte [eax + 0x433240]
jmp dword [ecx*4 + 0x433218]
mov byte [0x4ac37c], 0
jmp case.0x432475.43
mov byte [0x4ac37d], 1
jmp case.0x432475.43
mov byte [0x4ac37e], 1
jmp case.0x432475.43
mov byte [0x4ac37f], 1
jmp case.0x432475.43
push edi
call fcn.00486da6
add esp, 4
mov dword [0x4ac38c], eax
cmp eax, 0x3fff
jle case.0x432475.43
mov dword [0x4ac38c], 0x3fff
jmp case.0x432475.43
mov esi, edi
call fcn.00413490
fmul qword [0x4a1cd0]
call fcn.004941e0
mov dword [ebp - 0x20], eax
jmp case.0x432475.43
mov byte [0x4ac380], 1
jmp case.0x432475.43
mov byte [0x4ac381], 1
jmp case.0x432475.43
mov byte [ebp - 6], 1
mov al, byte [ebx + 1]
inc ebx
inc edi
test al, al
jne 0x432440
mov esi, dword [ebp - 0x1c]
xor edi, edi
push 0xff
lea edx, [ebp - 0x2db]
push edi
push edx
mov byte [ebp - 0x2dc], 0
call fcn.0048ecf0
add esp, 0xc
push 0x1ff
lea eax, [ebp - 0x4db]
push edi
push eax
mov byte [ebp - 0x4dc], 0
call fcn.0048ecf0
add esp, 0xc
mov byte [ebp - 0x17], 0
cmp byte [esi], 0
mov dword [ebp - 0x14], edi
mov eax, esi
mov dword [ebp - 0xc], esi
je 0x43266b
mov byte [ebp - 0x18], 0
mov cl, byte [eax]
movsx eax, cl
sub eax, 0x7b
je 0x43259a
sub eax, 2
je 0x43265b
cmp byte [ebp - 6], 0
je 0x432572
inc dword [ebp - 0x14]
jmp 0x43265b
push 0
mov byte [ebp - 0x18], cl
mov byte [ebp - 5], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
lea ecx, [ebp - 5]
push 1
push ecx
lea eax, [ebp - 0x18]
call fcn.00412460
add esp, 0xc
mov bl, al
jmp 0x432623
mov edi, dword [ebp - 0xc]
inc edi
push 0x7d
push edi
call fcn.00486811
mov esi, eax
add esp, 8
test esi, esi
je 0x43265b
sub eax, dword [ebp - 0xc]
dec eax
jne 0x4325c6
cmp byte [esi + 1], 0x7d
jne 0x43265b
inc esi
jmp 0x4325cb
cmp eax, 1
jne 0x4325de
cmp byte [ebp - 6], 0
je 0x4325d9
inc dword [ebp - 0x14]
jmp 0x43265b
mov dl, byte [edi]
mov byte [ebp - 0x18], dl
push 0
mov byte [esi], 0
mov byte [ebp - 5], 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
lea eax, [ebp - 5]
push 1
push eax
mov eax, edi
call fcn.00412460
mov bl, al
add esp, 0xc
test bl, bl
jne 0x43261d
mov eax, edi
call fcn.004123b0
movzx eax, ax
test ax, ax
je 0x43261d
mov ecx, eax
mov byte [ebp + ecx - 0x4dc], 1
mov byte [esi], 0x7d
mov dword [ebp - 0xc], esi
test bl, bl
je 0x43265b
movzx esi, bl
or byte [ebp + esi - 0x2dc], 1
cmp byte [ebp - 0x18], 0
lea esi, [ebp + esi - 0x2dc]
je 0x43265b
mov edx, dword [ebp - 0x18]
push edx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x43265b
test byte [ebp - 5], 0x30
je 0x432658
or byte [esi], 2
jmp 0x43265b
or byte [esi], 4
mov eax, dword [ebp - 0xc]
inc eax
cmp byte [eax], 0
mov dword [ebp - 0xc], eax
jne 0x43254d
mov eax, dword [ebp - 0x14]
mov dword [0x4ac35c], 0x499861
test eax, eax
je 0x4326db
inc eax
call fcn.0048f250
mov esi, dword [ebp - 0x1c]
mov eax, esp
mov dword [0x4ac35c], eax
cmp byte [esi], 0
mov edi, eax
je 0x4326d8
mov cl, byte [esi]
movsx eax, cl
sub eax, 0x7b
je 0x4326a7
sub eax, 2
je 0x4326d2
mov byte [edi], cl
inc edi
jmp 0x4326d2
lea ebx, [esi + 1]
push 0x7d
push ebx
call fcn.00486811
add esp, 8
test eax, eax
je 0x4326d2
cmp eax, ebx
jne 0x4326c4
cmp byte [eax + 1], 0x7d
jne 0x4326c4
inc eax
add esi, 2
cmp eax, esi
jne 0x4326d0
mov cl, byte [ebx]
mov byte [edi], cl
inc edi
mov esi, eax
inc esi
cmp byte [esi], 0
jne 0x432693
mov byte [edi], 0
mov edi, dword [ebp - 0x28]
mov dword [0x4ac36c], 0
cmp byte [edi], 0
je 0x432905
cmp dword [0x4ac368], 0
jne 0x43273d
push 0x1000
call fcn.004859d9
add esp, 4
mov dword [0x4ac368], eax
test eax, eax
jne 0x432733
mov ecx, dword [ebp + 8]
push 0x499861
push 0
push str.Out_of_memory.
call fcn.0042db20
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [0x4ac370], 0x400
mov esi, dword [ebp + 8]
cmp byte [esi + 1], 3
ja 0x43274d
xor eax, eax
jmp 0x4327ca
mov eax, dword [0x4ab1f4]
test eax, eax
je 0x4327b9
mov dl, byte [eax + 0x17]
test dl, dl
jne 0x432765
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
jmp 0x432767
mov cl, dl
cmp cl, 1
jne 0x4327b9
movzx ecx, byte [esi]
lea ebx, [ecx*8]
sub ebx, ecx
test byte [ebx*2 + 0x4a7996], 0x80
jne 0x4327b9
cmp dword [0x4ab408], 0
jne 0x4327aa
test dl, dl
jne 0x432794
mov ecx, dword [eax + 0xc]
jmp 0x432796
mov ecx, eax
test byte [ecx + 0x15], 0xa
jne 0x4327aa
xor edx, edx
cmp dword [ecx + 0xc], edx
setne dl
mov ecx, edx
test ecx, ecx
je 0x4327b9
cmp eax, dword [0x4abaa0]
je 0x4327b9
call fcn.00413950
jmp 0x4327ca
mov eax, dword [0x4ab24c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4327c1
sub eax, edx
inc eax
cmp eax, dword [0x4ac378]
jbe 0x432838
mov dword [0x4ac378], eax
cmp eax, 0x1000
ja 0x4327e9
mov dword [0x4ac378], 0x1000
mov eax, dword [0x4ac374]
test eax, eax
je 0x4327fb
push eax
call fcn.00485838
add esp, 4
mov eax, dword [0x4ac378]
push eax
call fcn.004859d9
add esp, 4
mov dword [0x4ac374], eax
test eax, eax
jne 0x43283d
push 0x499861
push eax
push str.Out_of_memory.
mov ecx, esi
mov dword [0x4ac378], eax
call fcn.0042db20
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4ac374]
mov ecx, dword [0x4ac368]
mov edx, dword [0x4ac36c]
mov dword [ecx + edx*4], eax
cmp byte [edi], 0
mov esi, dword [0x4ac374]
mov ebx, edi
je 0x4328e8
lea ecx, [ecx]
mov al, byte [ebx]
cmp al, 0x2c
je 0x43286b
mov byte [esi], al
inc esi
jmp 0x4328de
cmp byte [ebx + 1], 0x2c
jne 0x432878
mov byte [esi], 0x2c
inc esi
inc ebx
jmp 0x4328de
mov byte [esi], 0
mov ecx, dword [0x4ac368]
mov eax, dword [0x4ac36c]
mov edx, dword [ecx + eax*4]
cmp byte [edx], 0
je 0x4328a6
inc eax
mov dword [0x4ac36c], eax
inc esi
mov dword [ecx + eax*4], esi
mov byte [esi], 0
mov eax, dword [0x4ac36c]
mov ecx, dword [0x4ac368]
cmp byte [ebx + 1], 0
je 0x4328de
mov edx, dword [0x4ac370]
cmp eax, edx
jb 0x4328de
lea eax, [edx*4 + 0x1000]
push eax
push ecx
call fcn.00486dc7
add esp, 8
test eax, eax
je 0x432710
add dword [0x4ac370], 0x400
mov dword [0x4ac368], eax
inc ebx
cmp byte [ebx], 0
jne 0x432860
mov byte [esi], 0
mov ecx, dword [0x4ac368]
mov edx, dword [0x4ac36c]
mov eax, dword [ecx + edx*4]
cmp byte [eax], 0
je 0x432905
inc dword [0x4ac36c]
cmp byte [0x4ab3f9], 0
je 0x432943
mov ecx, dword [0x4ab2a0]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x432928
mov byte [0x4ab3f9], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x432943
push 1
push 0xffffffffffffffff
call fcn.004013c0
add esp, 8
or byte [0x4abbae], 1
xor esi, esi
lea edx, [ebp - 0x44dc]
lea eax, [ebp - 0x2dc]
lea ecx, [ebp - 0x4dc]
mov byte [ebp - 0x44dc], 0
mov dword [0x4ac384], edx
mov dword [0x4ac388], esi
mov dword [0x4ac354], eax
mov dword [0x4ac358], ecx
mov dword [0x4ac350], 1
mov byte [0x4ab3f4], 1
cmp dword [0x4ab3d0], esi
jne 0x4329a7
mov edx, dword [0x4a8a8c]
movzx eax, word [edx]
push eax
call fcn.00407b70
add esp, 4
mov eax, dword [ebp - 0x20]
cmp eax, esi
jle 0x4329e1
cmp byte [0x4ab3f9], 0
jne 0x4329e1
cmp eax, 0xa
jge 0x4329c1
mov eax, 0xa
mov ecx, dword [0x4ab2a0]
push 0x4037e0
push eax
push 0xc
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne dl
mov byte [0x4ab3f9], dl
push 1
push 0x8000012f
call fcn.004013c0
mov eax, dword [0x4ac350]
add esp, 8
cmp eax, 1
je 0x4329e1
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x432a06
jmp dword [eax*4 + 0x433270]
mov eax, dword [0x4abaa0]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push eax
call fcn.004756d0
jmp 0x432d7c
mov ecx, dword [0x4abaa0]
push 1
push 0
push 0xffffffffffffffff
push str.Match
push ecx
call fcn.004756d0
jmp 0x432d7c
mov edx, dword [str.EndKey:]
mov eax, dword [0x49e984]
push 0x78
lea ecx, [ebp - 0xa4]
push esi
push ecx
mov dword [ebp - 0xac], edx
mov dword [ebp - 0xa8], eax
call fcn.0048ecf0
mov al, byte [0x4ac364]
add esp, 0xc
test al, al
je 0x432a88
mov byte [ebp - 0xa5], al
mov byte [ebp - 0xa4], 0
jmp 0x432be6
cmp byte [0x4ac366], 0
je 0x432b4e
push 0xff
lea edx, [ebp - 0x1db]
push esi
push edx
mov byte [ebp - 0x1dc], 0
call fcn.0048ecf0
or byte [ebp - 0x1cc], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
cmp eax, esi
je 0x432afc
mov ebx, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push 0
push eax
call ebx
mov esi, eax
lea eax, [ebp - 0xdc]
push eax
push esi
mov dword [ebp - 0xdc], 0x30
call dword [sym.imp.USER32.dll_GetGUIThreadInfo]
test eax, eax
je 0x432afc
mov eax, dword [ebp - 0xd0]
test eax, eax
je 0x432afc
push 0
push eax
call ebx
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor ecx, ecx
cmp dword [0x4ab430], ecx
push eax
setne cl
lea edx, [ebp - 0xa5]
lea eax, [ebp - 0x1dc]
xor bl, bl
push ecx
movzx ecx, byte [0x4ac360]
push edx
push eax
push ecx
call fcn.004129c0
movzx edx, ax
movzx eax, byte [0x4ac360]
add esp, 4
push edx
push eax
call dword [sym.imp.USER32.dll_ToAsciiEx]
mov byte [ebp + eax - 0xa5], bl
jmp 0x432be6
cmp byte [0x4ac365], 0
je 0x432bad
mov cx, word [0x4ac362]
xor eax, eax
cmp word [eax*8 + 0x4a8a24], cx
je 0x432b8e
inc eax
cmp eax, 0xd
jl 0x432b60
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [ebp - 0xa5]
call fcn.00472920
add esp, 8
jmp 0x432bc8
mov ecx, dword [eax*8 + 0x4a8a20]
push 0x78
push ecx
lea edx, [ebp - 0xa5]
push edx
call fcn.004887c0
add esp, 0xc
mov byte [ebp - 0x2d], 0
jmp 0x432bc8
mov bl, byte [0x4ac360]
push 1
mov eax, 0x79
lea ecx, [ebp - 0xa5]
call fcn.00412220
add esp, 4
mov cl, byte [ebp - 0xa5]
sub cl, 0x61
cmp cl, 0x19
ja 0x432be6
cmp byte [ebp - 0xa4], 0
jne 0x432be6
add byte [ebp - 0xa5], 0xe0
mov eax, dword [0x4abaa0]
push 1
push 0
push 0xffffffffffffffff
lea edx, [ebp - 0xac]
push edx
push eax
call fcn.004756d0
jmp 0x432d7c
mov ecx, dword [0x4abaa0]
push 1
push 0
push 0xffffffffffffffff
push 0x49cec4
push ecx
call fcn.004756d0
jmp 0x432d7c
mov ecx, dword [0x4abaa0]
mov al, byte [ecx + 0x17]
mov dword [ebp - 0xc], ecx
test al, al
jne 0x432c48
mov edx, dword [ecx + 0xc]
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
push edx
call fcn.004756d0
jmp 0x432d7c
cmp dword [ecx + 8], str.NewInput
lea edx, [ecx + 8]
mov dword [ebp - 0x14], edx
jne 0x432c5c
mov edx, dword [ecx + 0xc]
jmp 0x432c61
mov edx, 8
mov dword [ebp - 0x1c], edx
lea ebx, [edx + 1]
cmp al, 2
jne 0x432cc9
mov ebx, edx
cmp dword [0x4ac340], esi
jne 0x432d7c
cmp edx, 0xffffffff
jne 0x432c85
mov ebx, 8
jmp 0x432c89
test edx, edx
je 0x432cb8
lea edi, [ebx + 1]
mov esi, 0x4ac334
call fcn.00404300
test eax, eax
je 0x432d7c
mov eax, dword [0x4ac340]
push ebx
push str.NewInput
push eax
mov esi, eax
call fcn.004887c0
add esp, 0xc
mov byte [esi + ebx], 0
push 1
mov ecx, 0x4ac334
call fcn.00404370
jmp 0x432d7c
cmp ebx, dword [0x4a78f4]
jbe 0x432cef
cmp ebx, dword [ecx + 0x10]
jbe 0x432cef
push 0x499861
push 0x4a0bc4
mov ecx, 0x4ac390
call fcn.0042dde0
jmp 0x432d7c
cmp ebx, 2
jae 0x432d02
push 4
xor al, al
call fcn.00475c80
jmp 0x432d7c
mov al, byte [ecx + 0x15]
lea edi, [ecx + 0x15]
test al, 2
je 0x432d1a
mov ecx, dword [ecx]
and al, 0x3d
mov byte [edi], al
mov eax, dword [ecx]
push ecx
mov ecx, dword [eax + 8]
call ecx
mov esi, dword [ebp - 0xc]
mov edx, dword [esi + 0x10]
and byte [edi], 0x82
mov dword [ebp + 8], edx
cmp ebx, edx
jbe 0x432d55
mov cl, byte [esi + 0x14]
cmp cl, 1
jbe 0x432df7
cmp cl, 2
je 0x432e31
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
and byte [edi], 0x7f
mov dword [edx + 0x10], esi
mov dword [ecx], eax
mov esi, edx
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebx]
mov edi, dword [ebp - 0x1c]
cmp eax, str.NewInput
je 0x432d73
push edi
push str.NewInput
push eax
call fcn.00486400
add esp, 0xc
mov eax, dword [ebx]
mov byte [edi + eax], 0
mov dword [esi + 0xc], edi
cmp byte [0x4ab3f9], 0
mov edi, dword [ebp - 0x10]
mov dword [0x4ac350], 0
je 0x432dc7
mov ecx, dword [0x4ab2a0]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x432dac
mov byte [0x4ab3f9], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x432dc7
push 1
push 0xffffffffffffffff
call fcn.004013c0
add esp, 8
mov dl, byte [edi + 0x17]
test dl, dl
jne 0x432f44
mov eax, dword [edi + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea edx, [ebp - 0x44dc]
push edx
push eax
call fcn.004756d0
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x40
ja 0x432e31
cmp ebx, 4
ja 0x432e08
mov esi, 4
jmp 0x432e16
mov edx, 8
cmp edx, ebx
sbb esi, esi
and esi, 0x38
add esi, edx
mov eax, esi
call fcn.0046fd50
test eax, eax
je 0x432d7c
mov ecx, dword [ebp - 0xc]
mov byte [ecx + 0x14], 1
jmp 0x432d45
cmp ebx, 0x10
jae 0x432e40
mov esi, 0x10
jmp 0x432ebb
cmp ebx, 0x104
jae 0x432e4f
mov esi, 0x104
jmp 0x432ebb
cmp ebx, 0x28000
jae 0x432e8a
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x432e67
fadd qword [0x4a1ca0]
fmul qword [0x4a1ca8]
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
or eax, 0xc00
mov dword [ebp - 0x28], eax
fldcw word [ebp - 0x28]
fistp qword [ebp - 0x2c]
mov esi, dword [ebp - 0x2c]
fldcw word [ebp + 0xa]
jmp 0x432ebb
cmp ebx, 0x190000
jae 0x432e9a
lea esi, [ebx + 0x4000]
jmp 0x432ebb
cmp ebx, 0x640000
jae 0x432eb5
mov eax, 0x51eb851f
mul ebx
mov esi, edx
mov edx, dword [ebp + 8]
shr esi, 5
add esi, ebx
jmp 0x432ebb
lea esi, [ebx + 0x10000]
mov eax, dword [0x4a78f4]
cmp esi, eax
jbe 0x432ec6
mov esi, eax
cmp cl, 2
jne 0x432efc
test edx, edx
je 0x432efc
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
push eax
mov bl, 1
call fcn.00485838
add esp, 4
test esi, esi
js 0x432f00
push esi
call fcn.004859d9
add esp, 4
test eax, eax
je 0x432f00
mov ecx, dword [ebp - 0xc]
mov byte [ecx + 0x14], 2
jmp 0x432d45
xor bl, bl
jmp 0x432edf
test bl, bl
je 0x432f19
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov dword [edx + 0x10], 0
mov dword [eax], 0x4abc1b
jmp 0x432f21
mov ecx, dword [ebp - 0x14]
mov edx, dword [ecx]
mov byte [edx], 0
mov eax, dword [ebp - 0xc]
push 0x499861
push str.Out_of_memory.
mov ecx, 0x4ac390
mov dword [eax + 0xc], 0
call fcn.0042dde0
jmp 0x432d7c
lea ecx, [ebp - 0x44dc]
cmp dword [edi + 8], ecx
jne 0x432f57
mov esi, dword [edi + 0xc]
mov dword [ebp - 0x20], esi
jmp 0x432f6e
lea eax, [ebp - 0x44dc]
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x432f60
sub eax, esi
mov esi, eax
mov dword [ebp - 0x20], eax
lea ebx, [esi + 1]
cmp dl, 2
jne 0x432ff2
cmp dword [0x4ac340], 0
mov ebx, esi
jne 0x4330eb
cmp esi, 0xffffffff
jne 0x432fa2
lea eax, [ebp - 0x44dc]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x432f97
sub eax, edx
mov ebx, eax
test ebx, ebx
je 0x432fd7
lea edi, [ebx + 1]
mov esi, 0x4ac334
call fcn.00404300
test eax, eax
je 0x4330eb
mov eax, dword [0x4ac340]
push ebx
lea edx, [ebp - 0x44dc]
push edx
push eax
mov esi, eax
call fcn.004887c0
add esp, 0xc
mov byte [esi + ebx], 0
push 1
mov ecx, 0x4ac334
call fcn.00404370
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, dword [0x4a78f4]
jbe 0x433022
cmp ebx, dword [edi + 0x10]
jbe 0x433022
push 0x499861
push 0x4a0bc4
mov ecx, 0x4ac390
call fcn.0042dde0
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 2
jae 0x433046
push 4
xor al, al
mov ecx, edi
call fcn.00475c80
mov eax, 1
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [edi + 0x15]
test al, 2
je 0x43305c
and al, 0x3d
mov byte [edi + 0x15], al
mov eax, dword [edi]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
and byte [edi + 0x15], 0x82
cmp ebx, dword [edi + 0x10]
jbe 0x433089
mov cl, byte [edi + 0x14]
cmp cl, 1
jbe 0x4330c1
cmp cl, 2
je 0x433105
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
and byte [edi + 0x15], 0x7f
mov dword [edi + 0x10], esi
mov esi, dword [ebp - 0x20]
mov dword [edi + 8], eax
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x44dc]
cmp eax, ecx
je 0x4330a3
push esi
mov edx, ecx
push edx
push eax
call fcn.00486400
add esp, 0xc
mov eax, dword [edi + 8]
mov byte [esi + eax], 0
mov dword [edi + 0xc], esi
mov eax, 1
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x40
ja 0x433105
cmp ebx, 4
ja 0x4330d2
mov esi, 4
jmp 0x4330e0
mov eax, 8
cmp eax, ebx
sbb esi, esi
and esi, 0x38
add esi, eax
mov eax, esi
call fcn.0046fd50
test eax, eax
jne 0x4330fc
xor eax, eax
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov byte [edi + 0x14], 1
jmp 0x43307c
cmp ebx, 0x10
jae 0x433114
mov esi, 0x10
jmp 0x43318f
cmp ebx, 0x104
jae 0x433126
mov esi, 0x104
jmp 0x43318f
cmp ebx, 0x28000
jae 0x433161
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x43313e
fadd qword [0x4a1ca0]
fmul qword [0x4a1ca8]
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
or eax, 0xc00
mov dword [ebp - 0x28], eax
fldcw word [ebp - 0x28]
fistp qword [ebp - 0x2c]
mov esi, dword [ebp - 0x2c]
fldcw word [ebp + 0xa]
jmp 0x43318f
cmp ebx, 0x190000
jae 0x433171
lea esi, [ebx + 0x4000]
jmp 0x43318f
cmp ebx, 0x640000
jae 0x433189
mov eax, 0x51eb851f
mul ebx
mov esi, edx
shr esi, 5
add esi, ebx
jmp 0x43318f
lea esi, [ebx + 0x10000]
mov eax, dword [0x4a78f4]
cmp esi, eax
jbe 0x43319a
mov esi, eax
cmp cl, 2
jne 0x4331cd
cmp dword [edi + 0x10], 0
je 0x4331cd
mov ecx, dword [edi + 8]
push ecx
mov bl, 1
call fcn.00485838
add esp, 4
test esi, esi
js 0x4331d1
push esi
call fcn.004859d9
add esp, 4
test eax, eax
je 0x4331d1
mov byte [edi + 0x14], 2
jmp 0x43307c
xor bl, bl
jmp 0x4331b3
test bl, bl
je 0x4331e5
mov dword [edi + 0x10], 0
mov dword [edi + 8], 0x4abc1b
jmp 0x4331eb
mov edx, dword [edi + 8]
mov byte [edx], 0
push 0x499861
push str.Out_of_memory.
mov ecx, 0x4ac390
mov dword [edi + 0xc], 0
call fcn.0042dde0
lea esp, [ebp - 0x44ec]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4