Function at 0x433700
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x8560
call fcn.004996b0
mov eax, dword [0x4c8480]
push ebx
xor ebx, ebx
push esi
push edi
mov dword [ebp - 0x10], eax
cmp eax, ebx
jne 0x43374f
cmp dword [0x4c96d8], 1
mov edx, dword [ebp + 8]
sete al
test al, al
sete al
movzx ecx, al
push ecx
push edx
mov dword [0x4c96d8], ebx
call fcn.0042e4c0
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4c84e4]
mov edi, dword [0x4c84dc]
mov esi, dword [0x4c84e0]
mov dword [ebp - 0x28], eax
mov dword [0x4c96d8], ebx
mov dword [0x4c9704], 1
mov word [0x4c9708], bx
mov dword [0x4c9714], 0x3fff
movzx eax, word [edi]
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x20], ebx
mov byte [ebp - 6], bl
cmp ax, bx
je 0x433864
lea ebx, [edi + 2]
lea esp, [esp]
movzx esi, ax
test esi, 0xffffff80
jne 0x4337bd
push 2
push esi
call fcn.0048f13e
add esp, 8
test eax, eax
je 0x4337bd
and esi, 0xffffffdf
movzx eax, si
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x4337d3.43
movzx ecx, byte [eax + 0x434664]
jmp dword [ecx*4 + 0x43463c]
mov byte [0x4c9704], 0
jmp case.0x4337d3.43
mov byte [0x4c9705], 1
jmp case.0x4337d3.43
mov byte [0x4c9706], 1
jmp case.0x4337d3.43
mov byte [0x4c9707], 1
jmp case.0x4337d3.43
push ebx
call fcn.0048f186
add esp, 4
mov dword [0x4c9714], eax
cmp eax, 0x3fff
jle case.0x4337d3.43
mov dword [0x4c9714], 0x3fff
jmp case.0x4337d3.43
mov esi, ebx
call fcn.00413b50
fmul qword [0x4bea68]
call fcn.0049c7e0
mov dword [ebp - 0x20], eax
jmp case.0x4337d3.43
mov byte [0x4c9708], 1
jmp case.0x4337d3.43
mov byte [0x4c9709], 1
jmp case.0x4337d3.43
mov byte [ebp - 6], 1
movzx eax, word [edi + 2]
add edi, 2
add ebx, 2
test ax, ax
jne 0x4337a0
mov esi, dword [ebp - 0x18]
xor ebx, ebx
push 0xff
lea edx, [ebp - 0x35b]
push ebx
push edx
mov byte [ebp - 0x35c], 0
call fcn.00496d90
add esp, 0xc
push 0x1ff
lea eax, [ebp - 0x55b]
push ebx
push eax
mov byte [ebp - 0x55c], 0
call fcn.00496d90
xor ecx, ecx
add esp, 0xc
mov word [ebp - 0x1a], cx
mov dword [ebp - 0xc], ebx
mov eax, esi
mov dword [ebp - 0x14], esi
cmp word [esi], bx
je 0x4339e1
xor edx, edx
mov word [ebp - 0x1c], dx
movzx ecx, word [eax]
mov eax, ecx
sub eax, 0x7b
je 0x433900
sub eax, 2
je 0x4339ce
cmp byte [ebp - 6], dl
je 0x4338d9
inc dword [ebp - 0xc]
jmp 0x4339ce
push 0
mov word [ebp - 0x1c], cx
mov byte [ebp - 5], dl
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push 1
lea ecx, [ebp - 5]
lea eax, [ebp - 0x1c]
call fcn.00412b20
add esp, 8
mov bl, al
jmp 0x433995
mov ebx, dword [ebp - 0x14]
lea edi, [ebx + 2]
push 0x7d
push edi
call fcn.0048eccb
mov esi, eax
add esp, 8
test esi, esi
je 0x4339ce
sub eax, ebx
sar eax, 1
dec eax
jne 0x433932
cmp word [esi + 2], 0x7d
jne 0x4339ce
add esi, 2
jmp 0x433937
cmp eax, 1
jne 0x43394c
cmp byte [ebp - 6], 0
je 0x433945
inc dword [ebp - 0xc]
jmp 0x4339ce
mov ax, word [edi]
mov word [ebp - 0x1c], ax
xor ecx, ecx
push ecx
mov word [esi], cx
mov byte [ebp - 5], cl
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push eax
push 1
lea ecx, [ebp - 5]
mov eax, edi
call fcn.00412b20
mov bl, al
add esp, 8
test bl, bl
jne 0x43398a
mov eax, edi
call fcn.00412a70
movzx eax, ax
test ax, ax
je 0x43398a
mov edx, eax
mov byte [ebp + edx - 0x55c], 1
mov eax, 0x7d
mov word [esi], ax
mov dword [ebp - 0x14], esi
test bl, bl
je 0x4339ce
movzx esi, bl
or byte [ebp + esi - 0x35c], 1
cmp word [ebp - 0x1c], 0
lea esi, [ebp + esi - 0x35c]
je 0x4339ce
mov ecx, dword [ebp - 0x1c]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x4339ce
test byte [ebp - 5], 0x30
je 0x4339cb
or byte [esi], 2
jmp 0x4339ce
or byte [esi], 4
mov eax, dword [ebp - 0x14]
add eax, 2
cmp word [eax], 0
mov dword [ebp - 0x14], eax
jne 0x4338b3
mov eax, dword [ebp - 0xc]
mov dword [0x4c96e4], 0x4a1868
test eax, eax
je 0x433a67
lea eax, [eax + eax + 2]
call fcn.004954d0
mov esi, dword [ebp - 0x18]
mov eax, esp
mov dword [0x4c96e4], eax
cmp word [esi], 0
mov ebx, eax
je 0x433a62
lea ecx, [ecx]
movzx ecx, word [esi]
mov eax, ecx
sub eax, 0x7b
je 0x433a27
sub eax, 2
je 0x433a59
mov word [ebx], cx
add ebx, 2
jmp 0x433a59
lea edi, [esi + 2]
push 0x7d
push edi
call fcn.0048eccb
add esp, 8
test eax, eax
je 0x433a59
cmp eax, edi
jne 0x433a47
cmp word [eax + 2], 0x7d
jne 0x433a47
add eax, 2
add esi, 4
cmp eax, esi
jne 0x433a57
mov dx, word [edi]
mov word [ebx], dx
add ebx, 2
mov esi, eax
add esi, 2
cmp word [esi], 0
jne 0x433a10
xor eax, eax
mov word [ebx], ax
mov ecx, dword [ebp - 0x28]
mov esi, dword [ebp + 8]
xor edi, edi
mov dword [0x4c96f4], edi
cmp word [ecx], di
je 0x433ca1
cmp dword [0x4c96f0], edi
jne 0x433aaa
push 0x1000
call fcn.0048df44
add esp, 4
mov dword [0x4c96f0], eax
cmp eax, edi
je 0x433b90
mov dword [0x4c96f8], 0x400
cmp byte [esi + 1], 3
ja 0x433ab7
xor eax, eax
jmp 0x433b3f
mov eax, dword [0x4c848c]
cmp eax, edi
je 0x433b20
mov dl, byte [eax + 0x17]
test dl, dl
jne 0x433acf
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
jmp 0x433ad1
mov cl, dl
cmp cl, 1
jne 0x433b20
movzx ecx, byte [esi]
lea ebx, [ecx*8]
sub ebx, ecx
test byte [ebx*2 + 0x4c4a2e], 0x80
jne 0x433b20
cmp dword [0x4c86a0], edi
jne 0x433b11
test dl, dl
jne 0x433afd
mov ecx, dword [eax + 0xc]
jmp 0x433aff
mov ecx, eax
test byte [ecx + 0x15], 0xa
jne 0x433b11
xor edx, edx
cmp dword [ecx + 0xc], edi
setne dl
cmp edx, edi
je 0x433b20
cmp eax, dword [0x4c8d38]
je 0x433b20
call fcn.00414020
jmp 0x433b3f
mov eax, dword [0x4c84e4]
lea edx, [eax + 2]
jmp 0x433b30
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x433b30
sub eax, edx
sar eax, 1
inc eax
cmp eax, dword [0x4c9700]
jbe 0x433bb1
mov dword [0x4c9700], eax
cmp eax, 0x1000
ja 0x433b5e
mov dword [0x4c9700], 0x1000
mov eax, dword [0x4c96fc]
cmp eax, edi
je 0x433b70
push eax
call fcn.0048ec91
add esp, 4
mov eax, dword [0x4c9700]
lea ecx, [eax + eax]
push ecx
call fcn.0048df44
add esp, 4
mov dword [0x4c96fc], eax
cmp eax, edi
jne 0x433bb6
mov dword [0x4c9700], edi
push 0x4a1868
push edi
push str.Out_of_memory.
mov ecx, esi
call fcn.0042e690
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4c96fc]
mov edx, dword [0x4c96f0]
mov ecx, dword [0x4c96f4]
mov edi, dword [ebp - 0x28]
mov dword [edx + ecx*4], eax
cmp word [edi], 0
mov esi, dword [0x4c96fc]
je 0x433c81
mov ebx, 0x2c
lea ecx, [ecx]
movzx eax, word [edi]
cmp ax, bx
je 0x433bf3
mov word [esi], ax
add esi, 2
jmp 0x433c74
cmp word [edi + 2], bx
jne 0x433c06
mov edx, ebx
mov word [esi], dx
add esi, 2
add edi, 2
jmp 0x433c74
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c96f0]
mov eax, dword [0x4c96f4]
mov edx, dword [ecx + eax*4]
cmp word [edx], 0
je 0x433c3b
inc eax
mov dword [0x4c96f4], eax
add esi, 2
mov dword [ecx + eax*4], esi
xor eax, eax
mov word [esi], ax
mov eax, dword [0x4c96f4]
mov ecx, dword [0x4c96f0]
cmp word [edi + 2], 0
je 0x433c74
mov edx, dword [0x4c96f8]
cmp eax, edx
jb 0x433c74
lea edx, [edx*4 + 0x1000]
push edx
push ecx
call fcn.0048f1a7
add esp, 8
test eax, eax
je 0x433dac
add dword [0x4c96f8], 0x400
mov dword [0x4c96f0], eax
add edi, 2
cmp word [edi], 0
jne 0x433be0
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4c96f0]
mov edx, dword [0x4c96f4]
mov eax, dword [ecx + edx*4]
cmp word [eax], 0
je 0x433ca1
inc dword [0x4c96f4]
cmp byte [0x4c8691], 0
je 0x433cdf
mov ecx, dword [0x4c8538]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x433cc4
mov byte [0x4c8691], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x433cdf
push 1
push 0xffffffffffffffff
call fcn.004013d0
add esp, 8
or byte [0x4c8f4a], 1
xor edx, edx
cmp dword [0x4c8668], 0
mov word [ebp - 0x855c], dx
mov dword [0x4c9710], edx
lea eax, [ebp - 0x855c]
lea ecx, [ebp - 0x35c]
lea edx, [ebp - 0x55c]
mov dword [0x4c970c], eax
mov dword [0x4c96dc], ecx
mov dword [0x4c96e0], edx
mov dword [0x4c96d8], 1
mov byte [0x4c868c], 1
jne 0x433d43
mov eax, dword [0x4c5b28]
movzx ecx, word [eax]
push ecx
call fcn.00407dd0
add esp, 4
mov eax, dword [ebp - 0x20]
test eax, eax
jle 0x433d80
cmp byte [0x4c8691], 0
jne 0x433d80
cmp eax, 0xa
jge 0x433d5d
mov eax, 0xa
mov edx, dword [0x4c8538]
push 0x403850
push eax
push 0xc
push edx
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne al
mov byte [0x4c8691], al
lea esp, [esp]
push 1
push 0x8000012f
call fcn.004013d0
mov eax, dword [0x4c96d8]
add esp, 8
cmp eax, 1
je 0x433d80
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x433da5
jmp dword [eax*4 + 0x434694]
mov ecx, dword [ebp + 8]
push 0x4a1868
push 0
push str.Out_of_memory.
call fcn.0042e690
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [0x4c8d38]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push ecx
call fcn.004777d0
jmp 0x434186
mov edx, dword [0x4c8d38]
push 1
push 0
push 0xffffffffffffffff
push str.Match
push edx
call fcn.004777d0
jmp 0x434186
mov ecx, dword [0x4aad14]
mov eax, dword [str.EndKey:]
mov edx, dword [0x4aad18]
push pe_nt_image_headers32
mov dword [ebp - 0x128], ecx
mov dword [ebp - 0x12c], eax
mov eax, dword [0x4aad1c]
lea ecx, [ebp - 0x11c]
push 0
push ecx
mov dword [ebp - 0x124], edx
mov dword [ebp - 0x120], eax
call fcn.00496d90
mov ax, word [0x4c96ec]
add esp, 0xc
test ax, ax
je 0x433e6b
xor edx, edx
mov word [ebp - 0x11e], ax
mov word [ebp - 0x11c], dx
jmp 0x433fdf
cmp byte [0x4c96ef], 0
je 0x433f38
push 0xff
lea eax, [ebp - 0x25b]
push 0
push eax
mov byte [ebp - 0x25c], 0
call fcn.00496d90
or byte [ebp - 0x24c], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
xor esi, esi
test eax, eax
je 0x433ee1
mov ebx, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push esi
push eax
call ebx
lea ecx, [ebp - 0x15c]
mov esi, eax
push ecx
push esi
mov dword [ebp - 0x15c], 0x30
call dword [sym.imp.USER32.dll_GetGUIThreadInfo]
test eax, eax
je 0x433ee1
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x433ee1
push 0
push eax
call ebx
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
cmp dword [0x4c86c8], edx
push eax
setne dl
lea eax, [ebp - 0x11e]
lea ecx, [ebp - 0x25c]
xor bl, bl
push edx
movzx edx, byte [0x4c96e8]
push 2
push eax
push ecx
push edx
call fcn.004130b0
movzx ecx, byte [0x4c96e8]
movzx eax, ax
add esp, 4
push eax
push ecx
call dword [sym.imp.USER32.dll_ToUnicodeEx]
xor edx, edx
mov word [ebp + eax*2 - 0x11e], dx
jmp 0x433fdf
cmp byte [0x4c96ee], 0
je 0x433f9f
mov cx, word [0x4c96ea]
xor eax, eax
lea ebx, [ebx]
cmp word [eax*8 + 0x4c5abc], cx
je 0x433f7e
inc eax
cmp eax, 0xd
jl 0x433f50
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [ebp - 0x11e]
call fcn.00474930
add esp, 8
jmp 0x433fba
mov eax, dword [eax*8 + 0x4c5ab8]
push 0x78
push eax
lea ecx, [ebp - 0x11e]
push ecx
call fcn.00490bb4
add esp, 0xc
xor edx, edx
mov word [ebp - 0x2e], dx
jmp 0x433fba
mov bl, byte [0x4c96e8]
push 1
mov eax, 0x79
lea ecx, [ebp - 0x11e]
call fcn.004128d0
add esp, 4
mov ecx, dword [ebp - 0x11e]
add ecx, 0xffffff9f
cmp cx, 0x19
ja 0x433fdf
cmp word [ebp - 0x11c], 0
jne 0x433fdf
mov edx, 0xffe0
add word [ebp - 0x11e], dx
mov ecx, dword [0x4c8d38]
push 1
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x12c]
push eax
push ecx
call fcn.004777d0
jmp 0x434186
mov edx, dword [0x4c8d38]
push 1
push 0
push 0xffffffffffffffff
push 0x4a7ef8
push edx
call fcn.004777d0
jmp 0x434186
mov ecx, dword [0x4c8d38]
mov al, byte [ecx + 0x17]
mov dword [ebp - 0xc], ecx
test al, al
jne 0x434042
mov eax, dword [ecx + 0xc]
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
push eax
call fcn.004777d0
jmp 0x434186
cmp dword [ecx + 8], str.NewInput
lea edx, [ecx + 8]
mov dword [ebp - 0x14], edx
jne 0x434058
mov edx, dword [ecx + 0xc]
shr edx, 1
jmp 0x43405d
mov edx, 8
lea esi, [edx + 1]
mov dword [ebp - 0x18], edx
lea ebx, [esi + esi]
cmp al, 2
jne 0x4340c9
cmp dword [0x4ca25c], 0
mov ebx, edx
jne 0x434186
cmp edx, 0xffffffff
jne 0x434085
mov ebx, 8
jmp 0x434089
test edx, edx
je 0x4340ba
lea edi, [ebx + 1]
mov esi, 0x4ca250
call fcn.00404250
test eax, eax
je 0x434186
mov eax, dword [0x4ca25c]
push ebx
push str.NewInput
push eax
mov esi, eax
call fcn.00490bb4
add esp, 0xc
xor ecx, ecx
mov word [esi + ebx*2], cx
mov ecx, 0x4ca250
call fcn.004042d0
jmp 0x434186
cmp ebx, dword [0x4c4924]
jbe 0x4340ef
cmp ebx, dword [ecx + 0x10]
jbe 0x4340ef
push 0x4a1868
push 0x4bce28
mov ecx, 0x4c9718
call fcn.0042e960
jmp 0x434186
cmp esi, 2
jae 0x434102
push 4
xor al, al
call fcn.00477d90
jmp 0x434186
mov al, byte [ecx + 0x15]
lea edi, [ecx + 0x15]
test al, 2
je 0x43411a
mov ecx, dword [ecx]
and al, 0x3d
mov byte [edi], al
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push ecx
call eax
mov esi, dword [ebp - 0xc]
mov edx, dword [esi + 0x10]
and byte [edi], 0x82
mov dword [ebp + 8], edx
cmp ebx, edx
jbe 0x434155
mov cl, byte [esi + 0x14]
cmp cl, 1
jbe 0x434200
cmp cl, 2
je 0x43423d
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 edi, dword [ebp - 0x14]
mov eax, dword [edi]
cmp eax, str.NewInput
je 0x434176
mov ecx, dword [ebp - 0x18]
lea edx, [ecx + ecx]
push edx
push str.NewInput
push eax
call fcn.0048e930
add esp, 0xc
mov eax, dword [ebp - 0x18]
mov ecx, dword [edi]
add eax, eax
xor edx, edx
mov word [eax + ecx], dx
mov dword [esi + 0xc], eax
cmp byte [0x4c8691], 0
mov edi, dword [ebp - 0x10]
mov dword [0x4c96d8], 0
je 0x4341d0
mov eax, dword [0x4c8538]
push 0xc
push eax
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x4341b5
mov byte [0x4c8691], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x4341d0
push 1
push 0xffffffffffffffff
call fcn.004013d0
add esp, 8
mov dl, byte [edi + 0x17]
test dl, dl
jne 0x43434f
mov edx, dword [edi + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x855c]
push ecx
push edx
call fcn.004777d0
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x80
ja 0x43423d
cmp ebx, 8
ja 0x434214
mov esi, 8
jmp 0x434222
mov ecx, 0x10
cmp ecx, ebx
sbb esi, esi
and esi, 0x70
add esi, ecx
mov eax, esi
call fcn.00471cb0
test eax, eax
je 0x434186
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x14], 1
jmp 0x434145
cmp ebx, 0x20
jae 0x434249
mov esi, 0x20
jmp 0x4342c4
cmp ebx, 0x208
jae 0x434258
mov esi, 0x208
jmp 0x4342c4
cmp ebx, 0x50000
jae 0x434293
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x434270
fadd qword [0x4bea40]
fmul qword [0x4bea78]
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
or eax, 0xc00
mov dword [ebp - 0x20], eax
fldcw word [ebp - 0x20]
fistp qword [ebp - 0x24]
mov esi, dword [ebp - 0x24]
fldcw word [ebp + 0xa]
jmp 0x4342c4
cmp ebx, 0x320000
jae 0x4342a3
lea esi, [ebx + 0x8000]
jmp 0x4342c4
cmp ebx, 0xc80000
jae 0x4342be
mov eax, 0x51eb851f
mul ebx
mov esi, edx
mov edx, dword [ebp + 8]
shr esi, 5
add esi, ebx
jmp 0x4342c4
lea esi, [ebx + 0x20000]
mov eax, dword [0x4c4924]
cmp esi, eax
jbe 0x4342cf
mov esi, eax
cmp cl, 2
jne 0x434305
test edx, edx
je 0x434305
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
push ecx
mov bl, 1
call fcn.0048ec91
add esp, 4
test esi, esi
js 0x434309
push esi
call fcn.0048df44
add esp, 4
test eax, eax
je 0x434309
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x14], 2
jmp 0x434145
xor bl, bl
jmp 0x4342e8
test bl, bl
je 0x434322
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
mov dword [eax + 0x10], 0
mov dword [ecx], 0x4c96ac
jmp 0x43432c
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
xor ecx, ecx
mov word [eax], cx
mov edx, dword [ebp - 0xc]
push 0x4a1868
push str.Out_of_memory.
mov ecx, 0x4c9718
mov dword [edx + 0xc], 0
call fcn.0042e960
jmp 0x434186
lea eax, [ebp - 0x855c]
cmp dword [edi + 8], eax
jne 0x434364
mov esi, dword [edi + 0xc]
shr esi, 1
mov dword [ebp - 0x20], esi
jmp 0x434384
lea eax, [ebp - 0x855c]
lea esi, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x434370
sub eax, esi
sar eax, 1
mov esi, eax
mov dword [ebp - 0x20], eax
lea eax, [esi + 1]
lea ebx, [eax + eax]
cmp dl, 2
jne 0x434411
cmp dword [0x4ca25c], 0
mov ebx, esi
jne 0x434511
cmp esi, 0xffffffff
jne 0x4343c1
lea eax, [ebp - 0x855c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4343b0
sub eax, edx
sar eax, 1
mov ebx, eax
test ebx, ebx
je 0x4343f8
lea edi, [ebx + 1]
mov esi, 0x4ca250
call fcn.00404250
test eax, eax
je 0x434511
mov eax, dword [0x4ca25c]
push ebx
lea ecx, [ebp - 0x855c]
push ecx
push eax
mov esi, eax
call fcn.00490bb4
add esp, 0xc
xor edx, edx
mov word [esi + ebx*2], dx
mov ecx, 0x4ca250
call fcn.004042d0
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, dword [0x4c4924]
jbe 0x434441
cmp ebx, dword [edi + 0x10]
jbe 0x434441
push 0x4a1868
push 0x4bce28
mov ecx, 0x4c9718
call fcn.0042e960
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jae 0x434465
push 4
xor al, al
mov ecx, edi
call fcn.00477d90
mov eax, 1
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [edi + 0x15]
test al, 2
je 0x43447b
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 0x4344a8
mov cl, byte [edi + 0x14]
cmp cl, 1
jbe 0x4344e4
cmp cl, 2
je 0x43452b
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 - 0x855c]
cmp eax, ecx
je 0x4344c3
lea edx, [esi + esi]
push edx
push ecx
push eax
call fcn.0048e930
add esp, 0xc
mov edx, dword [edi + 8]
lea eax, [esi + esi]
xor ecx, ecx
mov word [eax + edx], cx
mov dword [edi + 0xc], eax
lea eax, [ecx + 1]
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x80
ja 0x43452b
cmp ebx, 8
ja 0x4344f8
mov esi, 8
jmp 0x434506
mov eax, 0x10
cmp eax, ebx
sbb esi, esi
and esi, 0x70
add esi, eax
mov eax, esi
call fcn.00471cb0
test eax, eax
jne 0x434522
xor eax, eax
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov byte [edi + 0x14], 1
jmp 0x43449b
cmp ebx, 0x20
jae 0x43453a
mov esi, 0x20
jmp 0x4345b2
cmp ebx, 0x208
jae 0x434549
mov esi, 0x208
jmp 0x4345b2
cmp ebx, 0x50000
jae 0x434584
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x434561
fadd qword [0x4bea40]
fmul qword [0x4bea78]
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 0x4345b2
cmp ebx, 0x320000
jae 0x434594
lea esi, [ebx + 0x8000]
jmp 0x4345b2
cmp ebx, 0xc80000
jae 0x4345ac
mov eax, 0x51eb851f
mul ebx
mov esi, edx
shr esi, 5
add esi, ebx
jmp 0x4345b2
lea esi, [ebx + 0x20000]
mov eax, dword [0x4c4924]
cmp esi, eax
jbe 0x4345bd
mov esi, eax
cmp cl, 2
jne 0x4345f0
cmp dword [edi + 0x10], 0
je 0x4345f0
mov ecx, dword [edi + 8]
push ecx
mov bl, 1
call fcn.0048ec91
add esp, 4
test esi, esi
js 0x4345f4
push esi
call fcn.0048df44
add esp, 4
test eax, eax
je 0x4345f4
mov byte [edi + 0x14], 2
jmp 0x43449b
xor bl, bl
jmp 0x4345d6
test bl, bl
je 0x434608
mov dword [edi + 0x10], 0
mov dword [edi + 8], 0x4c96ac
jmp 0x434610
mov edx, dword [edi + 8]
xor eax, eax
mov word [edx], ax
push 0x4a1868
push str.Out_of_memory.
mov ecx, 0x4c9718
mov dword [edi + 0xc], 0
call fcn.0042e960
lea esp, [ebp - 0x856c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4