Function at 0x435420
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x8538
call fcn.0049a260
mov eax, dword [0x4c7f00]
push ebx
xor ebx, ebx
push esi
push edi
mov dword [ebp - 0x10], eax
cmp eax, ebx
jne 0x43546f
cmp dword [0x4ca100], 1
mov edx, dword [ebp + 8]
sete al
test al, al
sete al
movzx ecx, al
push ecx
push edx
mov dword [0x4ca100], ebx
call fcn.004302c0
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4c7f64]
mov edi, dword [0x4c7f5c]
mov esi, dword [0x4c7f60]
mov dword [ebp - 0x30], eax
mov dword [0x4ca100], ebx
mov dword [0x4ca12c], 1
mov word [0x4ca130], bx
mov dword [0x4ca13c], 0x3fff
movzx eax, word [edi]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x28], ebx
mov byte [ebp - 6], bl
cmp ax, bx
je 0x435584
lea ebx, [edi + 2]
lea esp, [esp]
movzx esi, ax
test esi, 0xffffff80
jne 0x4354dd
push 2
push esi
call fcn.0048fcbe
add esp, 8
test eax, eax
je 0x4354dd
and esi, 0xffffffdf
movzx eax, si
add eax, 0xffffffd6
cmp eax, 0x2c
ja case.0x4354f3.43
movzx ecx, byte [eax + 0x4363f8]
jmp dword [ecx*4 + 0x4363d0]
mov byte [0x4ca12c], 0
jmp case.0x4354f3.43
mov byte [0x4ca12d], 1
jmp case.0x4354f3.43
mov byte [0x4ca12e], 1
jmp case.0x4354f3.43
mov byte [0x4ca12f], 1
jmp case.0x4354f3.43
push ebx
call fcn.0048fd06
add esp, 4
mov dword [0x4ca13c], eax
cmp eax, 0x3fff
jle case.0x4354f3.43
mov dword [0x4ca13c], 0x3fff
jmp case.0x4354f3.43
mov esi, ebx
call fcn.004130a0
fmul qword [0x4bf1c8]
call fcn.0049d390
mov dword [ebp - 0x28], eax
jmp case.0x4354f3.43
mov byte [0x4ca130], 1
jmp case.0x4354f3.43
mov byte [0x4ca131], 1
jmp case.0x4354f3.43
mov byte [ebp - 6], 1
movzx eax, word [edi + 2]
add edi, 2
add ebx, 2
test ax, ax
jne 0x4354c0
mov esi, dword [ebp - 0x20]
xor ebx, ebx
push 0xff
lea edx, [ebp - 0x333]
push ebx
push edx
mov byte [ebp - 0x334], 0
call fcn.00497940
add esp, 0xc
push 0x1ff
lea eax, [ebp - 0x533]
push ebx
push eax
mov byte [ebp - 0x534], 0
call fcn.00497940
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 0x435793
xor edx, edx
mov word [ebp - 0x1c], dx
movzx ecx, word [eax]
mov eax, ecx
sub eax, 0x7b
je 0x4356af
sub eax, 2
je 0x435780
cmp byte [ebp - 6], dl
je 0x4355fd
inc dword [ebp - 0xc]
jmp 0x435780
push 0
mov word [ebp - 0x1c], cx
mov byte [ebp - 5], dl
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
mov cx, word [ebp - 0x1c]
test cx, cx
je 0x435780
cmp word [ebp - 0x1a], 0
jne 0x435634
mov ecx, eax
mov eax, dword [ebp - 0x1c]
lea esi, [ebp - 5]
call fcn.00412330
mov bl, al
jmp 0x435747
movzx esi, cx
test esi, 0xffffff80
jne 0x435651
push 2
push esi
call fcn.0048fcbe
add esp, 8
test eax, eax
je 0x435651
and esi, 0xffffffdf
cmp si, 0x56
jne 0x43567c
mov eax, dword [ebp - 0x1a]
call fcn.004095a0
cmp ax, 0x4b
jne 0x43567c
push 0x10
lea eax, [ebp - 0x18]
push 0
push eax
call fcn.0049009b
add esp, 0xc
mov bl, al
jmp 0x435747
xor esi, esi
mov edi, edi
mov edx, dword [esi*8 + 0x4c5218]
lea ecx, [ebp - 0x1c]
push ecx
push edx
call fcn.0048ea69
add esp, 8
test eax, eax
je 0x4356a3
inc esi
cmp esi, 0x6d
jl 0x435680
jmp 0x435780
mov bl, byte [esi*8 + 0x4c521c]
jmp 0x435747
mov ebx, dword [ebp - 0x14]
lea edi, [ebx + 2]
push 0x7d
push edi
call fcn.0048f841
mov esi, eax
add esp, 8
test esi, esi
je 0x435780
sub eax, ebx
sar eax, 1
dec eax
jne 0x4356e1
cmp word [esi + 2], 0x7d
jne 0x435780
add esi, 2
jmp 0x4356e6
cmp eax, 1
jne 0x4356fb
cmp byte [ebp - 6], 0
je 0x4356f4
inc dword [ebp - 0xc]
jmp 0x435780
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 1
mov ecx, eax
push 1
lea edx, [ebp - 5]
mov eax, edi
call fcn.00412270
mov bl, al
add esp, 8
test bl, bl
jne 0x43573c
mov eax, edi
call fcn.004121d0
movzx eax, ax
test ax, ax
je 0x43573c
mov edx, eax
mov byte [ebp + edx - 0x534], 1
mov eax, 0x7d
mov word [esi], ax
mov dword [ebp - 0x14], esi
test bl, bl
je 0x435780
movzx esi, bl
or byte [ebp + esi - 0x334], 1
cmp word [ebp - 0x1c], 0
lea esi, [ebp + esi - 0x334]
je 0x435780
mov ecx, dword [ebp - 0x1c]
push ecx
call dword [sym.imp.USER32.dll_IsCharAlphaW]
test eax, eax
jne 0x435780
test byte [ebp - 5], 0x30
je 0x43577d
or byte [esi], 2
jmp 0x435780
or byte [esi], 4
mov eax, dword [ebp - 0x14]
add eax, 2
cmp word [eax], 0
mov dword [ebp - 0x14], eax
jne 0x4355d3
mov eax, dword [ebp - 0xc]
mov dword [0x4ca10c], 0x4acd84
test eax, eax
je 0x435817
lea eax, [eax + eax + 2]
call fcn.00496040
mov esi, dword [ebp - 0x20]
mov eax, esp
mov dword [0x4ca10c], eax
cmp word [esi], 0
mov ebx, eax
je 0x435812
nop
movzx ecx, word [esi]
mov eax, ecx
sub eax, 0x7b
je 0x4357d7
sub eax, 2
je 0x435809
mov word [ebx], cx
add ebx, 2
jmp 0x435809
lea edi, [esi + 2]
push 0x7d
push edi
call fcn.0048f841
add esp, 8
test eax, eax
je 0x435809
cmp eax, edi
jne 0x4357f7
cmp word [eax + 2], 0x7d
jne 0x4357f7
add eax, 2
add esi, 4
cmp eax, esi
jne 0x435807
mov dx, word [edi]
mov word [ebx], dx
add ebx, 2
mov esi, eax
add esi, 2
cmp word [esi], 0
jne 0x4357c0
xor eax, eax
mov word [ebx], ax
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp + 8]
xor edi, edi
mov dword [0x4ca11c], edi
cmp word [ecx], di
je 0x435a51
cmp dword [0x4ca118], edi
jne 0x43585a
push 0x1000
call fcn.0048eaf4
add esp, 4
mov dword [0x4ca118], eax
cmp eax, edi
je 0x435940
mov dword [0x4ca120], 0x400
cmp byte [esi + 1], 3
ja 0x435867
xor eax, eax
jmp 0x4358ef
mov eax, dword [0x4c7f0c]
cmp eax, edi
je 0x4358d0
mov dl, byte [eax + 0x17]
test dl, dl
jne 0x43587f
mov ecx, dword [eax + 0xc]
mov cl, byte [ecx + 0x17]
jmp 0x435881
mov cl, dl
cmp cl, 1
jne 0x4358d0
movzx ecx, byte [esi]
lea ebx, [ecx*8]
sub ebx, ecx
test byte [ebx*2 + 0x4c44f6], 0x80
jne 0x4358d0
cmp dword [0x4c811c], edi
jne 0x4358c1
test dl, dl
jne 0x4358ad
mov ecx, dword [eax + 0xc]
jmp 0x4358af
mov ecx, eax
test byte [ecx + 0x15], 0xa
jne 0x4358c1
xor edx, edx
cmp dword [ecx + 0xc], edi
setne dl
cmp edx, edi
je 0x4358d0
cmp eax, dword [0x4c87b4]
je 0x4358d0
call fcn.004135f0
jmp 0x4358ef
mov eax, dword [0x4c7f64]
lea edx, [eax + 2]
jmp 0x4358e0
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x4358e0
sub eax, edx
sar eax, 1
inc eax
cmp eax, dword [0x4ca128]
jbe 0x435961
mov dword [0x4ca128], eax
cmp eax, 0x1000
ja 0x43590e
mov dword [0x4ca128], 0x1000
mov eax, dword [0x4ca124]
cmp eax, edi
je 0x435920
push eax
call fcn.004900cf
add esp, 4
mov eax, dword [0x4ca128]
lea ecx, [eax + eax]
push ecx
call fcn.0048eaf4
add esp, 4
mov dword [0x4ca124], eax
cmp eax, edi
jne 0x435966
mov dword [0x4ca128], edi
push 0x4acd84
push edi
push str.Out_of_memory.
mov ecx, esi
call fcn.00430490
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [0x4ca124]
mov edx, dword [0x4ca118]
mov ecx, dword [0x4ca11c]
mov edi, dword [ebp - 0x30]
mov dword [edx + ecx*4], eax
cmp word [edi], 0
mov esi, dword [0x4ca124]
je 0x435a31
mov ebx, 0x2c
lea ecx, [ecx]
movzx eax, word [edi]
cmp ax, bx
je 0x4359a3
mov word [esi], ax
add esi, 2
jmp 0x435a24
cmp word [edi + 2], bx
jne 0x4359b6
mov edx, ebx
mov word [esi], dx
add esi, 2
add edi, 2
jmp 0x435a24
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4ca118]
mov eax, dword [0x4ca11c]
mov edx, dword [ecx + eax*4]
cmp word [edx], 0
je 0x4359eb
inc eax
mov dword [0x4ca11c], eax
add esi, 2
mov dword [ecx + eax*4], esi
xor eax, eax
mov word [esi], ax
mov eax, dword [0x4ca11c]
mov ecx, dword [0x4ca118]
cmp word [edi + 2], 0
je 0x435a24
mov edx, dword [0x4ca120]
cmp eax, edx
jb 0x435a24
lea edx, [edx*4 + 0x1000]
push edx
push ecx
call fcn.0048fd27
add esp, 8
test eax, eax
je 0x435b7c
add dword [0x4ca120], 0x400
mov dword [0x4ca118], eax
add edi, 2
cmp word [edi], 0
jne 0x435990
xor eax, eax
mov word [esi], ax
mov ecx, dword [0x4ca118]
mov edx, dword [0x4ca11c]
mov eax, dword [ecx + edx*4]
cmp word [eax], 0
je 0x435a51
inc dword [0x4ca11c]
cmp byte [0x4c810d], 0
je 0x435a8f
mov ecx, dword [0x4c7fb8]
push 0xc
push ecx
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x435a74
mov byte [0x4c810d], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x435a8f
push 1
push 0xffffffffffffffff
call fcn.00401340
add esp, 8
xor edx, edx
push 0x7ffe
push edx
lea eax, [ebp - 0x8532]
push eax
mov word [ebp - 0x8534], dx
call fcn.00497940
or byte [0x4c89c6], 1
add esp, 0xc
cmp dword [0x4c80e8], 0
lea ecx, [ebp - 0x8534]
lea edx, [ebp - 0x334]
lea eax, [ebp - 0x534]
mov dword [0x4ca134], ecx
mov dword [0x4ca138], 0
mov dword [0x4ca104], edx
mov dword [0x4ca108], eax
mov dword [0x4ca100], 1
mov byte [0x4c8108], 1
jne 0x435b0d
mov ecx, dword [0x4c55ec]
movzx edx, word [ecx]
push edx
call fcn.00408030
add esp, 4
mov eax, dword [ebp - 0x28]
test eax, eax
jle 0x435b50
cmp byte [0x4c810d], 0
jne 0x435b50
cmp eax, 0xa
jge 0x435b27
mov eax, 0xa
push 0x403830
push eax
mov eax, dword [0x4c7fb8]
push 0xc
push eax
call dword [sym.imp.USER32.dll_SetTimer]
test eax, eax
setne cl
mov byte [0x4c810d], cl
jmp 0x435b50
push 1
push 0x8000012f
call fcn.00401340
mov eax, dword [0x4ca100]
add esp, 8
cmp eax, 1
je 0x435b50
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x435b75
jmp dword [eax*4 + 0x436428]
mov ecx, dword [ebp + 8]
push 0x4acd84
push 0
push str.Out_of_memory.
call fcn.00430490
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [0x4c87b4]
push 1
push 0
push 0xffffffffffffffff
push str.Timeout
push edx
call fcn.004783a0
jmp 0x435f1c
mov eax, dword [0x4c87b4]
push 1
push 0
push 0xffffffffffffffff
push str.Match
push eax
call fcn.004783a0
jmp 0x435f1c
mov edx, dword [0x4ab7a4]
mov ecx, dword [str.EndKey:]
mov eax, dword [0x4ab7a8]
push 0xf0
mov dword [ebp - 0x130], edx
mov dword [ebp - 0x134], ecx
mov ecx, dword [0x4ab7ac]
lea edx, [ebp - 0x124]
push 0
push edx
mov dword [ebp - 0x12c], eax
mov dword [ebp - 0x128], ecx
call fcn.00497940
mov ax, word [0x4ca114]
add esp, 0xc
test ax, ax
je 0x435c3b
mov word [ebp - 0x126], ax
xor eax, eax
mov word [ebp - 0x124], ax
jmp 0x435d75
cmp byte [0x4ca117], 0
je 0x435cda
push 0xff
lea ecx, [ebp - 0x233]
push 0
push ecx
mov byte [ebp - 0x234], 0
call fcn.00497940
or byte [ebp - 0x224], 0x80
add esp, 0xc
call dword [sym.imp.USER32.dll_GetForegroundWindow]
test eax, eax
je 0x435c81
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
jmp 0x435c83
xor eax, eax
push eax
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
xor edx, edx
cmp dword [0x4c8148], edx
push eax
setne dl
lea eax, [ebp - 0x126]
lea ecx, [ebp - 0x234]
xor bl, bl
push edx
movzx edx, byte [0x4ca110]
push 2
push eax
push ecx
push edx
call fcn.004126d0
movzx ecx, byte [0x4ca110]
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 - 0x126], dx
jmp 0x435d75
cmp byte [0x4ca116], 0
je 0x435d3f
mov cx, word [0x4ca112]
xor eax, eax
lea esp, [esp]
cmp word [eax*8 + 0x4c5584], cx
je 0x435d1e
inc eax
cmp eax, 0xd
jl 0x435cf0
movzx eax, cx
push eax
push str.sc_03X
mov esi, 0x79
lea edi, [ebp - 0x126]
call fcn.00475700
add esp, 8
jmp 0x435d5a
mov eax, dword [eax*8 + 0x4c5580]
push 0x78
push eax
lea ecx, [ebp - 0x126]
push ecx
call fcn.00491764
add esp, 0xc
xor edx, edx
mov word [ebp - 0x36], dx
jmp 0x435d5a
mov bl, byte [0x4ca110]
push 1
mov eax, 0x79
lea ecx, [ebp - 0x126]
call fcn.00412030
add esp, 4
mov ecx, dword [ebp - 0x126]
add ecx, 0xffffff9f
cmp cx, 0x19
ja 0x435d75
mov edx, 0xffe0
add word [ebp - 0x126], dx
mov ecx, dword [0x4c87b4]
push 1
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x134]
push eax
push ecx
call fcn.004783a0
jmp 0x435f1c
mov edx, dword [0x4c87b4]
push 1
push 0
push 0xffffffffffffffff
push 0x4ab7b0
push edx
call fcn.004783a0
jmp 0x435f1c
mov ecx, dword [0x4c87b4]
mov al, byte [ecx + 0x17]
mov dword [ebp - 0xc], ecx
test al, al
jne 0x435dd8
mov eax, dword [ecx + 0xc]
push 1
push 0
push 0xffffffffffffffff
push str.NewInput
push eax
call fcn.004783a0
jmp 0x435f1c
cmp dword [ecx + 8], str.NewInput
lea edx, [ecx + 8]
mov dword [ebp - 0x14], edx
jne 0x435dee
mov edx, dword [ecx + 0xc]
shr edx, 1
jmp 0x435df3
mov edx, 8
lea esi, [edx + 1]
mov dword [ebp - 0x20], edx
lea ebx, [esi + esi]
cmp al, 2
jne 0x435e5f
cmp dword [0x4ca0f0], 0
mov ebx, edx
jne 0x435f1c
cmp edx, 0xffffffff
jne 0x435e1b
mov ebx, 8
jmp 0x435e1f
test edx, edx
je 0x435e50
lea edi, [ebx + 1]
mov esi, 0x4ca0e4
call fcn.004041f0
test eax, eax
je 0x435f1c
mov eax, dword [0x4ca0f0]
push ebx
push str.NewInput
push eax
mov esi, eax
call fcn.00491764
add esp, 0xc
xor ecx, ecx
mov word [esi + ebx*2], cx
mov ecx, 0x4ca0e4
call fcn.00404270
jmp 0x435f1c
cmp ebx, dword [0x4c43dc]
jbe 0x435e85
cmp ebx, dword [ecx + 0x10]
jbe 0x435e85
push 0x4acd84
push 0x4bd738
mov ecx, 0x4ca140
call fcn.00430750
jmp 0x435f1c
cmp esi, 2
jae 0x435e98
push 4
xor al, al
call fcn.00478950
jmp 0x435f1c
mov al, byte [ecx + 0x15]
lea edi, [ecx + 0x15]
test al, 2
je 0x435eb0
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 0x435eeb
mov cl, byte [esi + 0x14]
cmp cl, 1
jbe 0x435f96
cmp cl, 2
je 0x435fd3
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 0x435f0c
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + ecx]
push edx
push str.NewInput
push eax
call fcn.0048f4e0
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [edi]
add eax, eax
xor edx, edx
mov word [eax + ecx], dx
mov dword [esi + 0xc], eax
cmp byte [0x4c810d], 0
mov edi, dword [ebp - 0x10]
mov dword [0x4ca100], 0
je 0x435f66
mov eax, dword [0x4c7fb8]
push 0xc
push eax
call dword [sym.imp.USER32.dll_KillTimer]
test eax, eax
je 0x435f4b
mov byte [0x4c810d], 0
push 0x10
call dword [sym.imp.USER32.dll_GetQueueStatus]
shr eax, 0x10
test al, 0x10
je 0x435f66
push 1
push 0xffffffffffffffff
call fcn.00401340
add esp, 8
mov dl, byte [edi + 0x17]
test dl, dl
jne 0x4360e8
mov edx, dword [edi + 0xc]
push 1
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x8534]
push ecx
push edx
call fcn.004783a0
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x80
ja 0x435fd3
cmp ebx, 8
ja 0x435faa
mov esi, 8
jmp 0x435fb8
mov ecx, 0x10
cmp ecx, ebx
sbb esi, esi
and esi, 0x70
add esi, ecx
mov eax, esi
call fcn.00472b00
test eax, eax
je 0x435f1c
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x14], 1
jmp 0x435edb
cmp ebx, 0x20
jae 0x435fe2
mov esi, 0x20
jmp 0x43605d
cmp ebx, 0x208
jae 0x435ff1
mov esi, 0x208
jmp 0x43605d
cmp ebx, 0x50000
jae 0x43602c
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x436009
fadd qword [0x4bf1a0]
fmul qword [0x4bf1d8]
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 0x43605d
cmp ebx, 0x320000
jae 0x43603c
lea esi, [ebx + 0x8000]
jmp 0x43605d
cmp ebx, 0xc80000
jae 0x436057
mov eax, 0x51eb851f
mul ebx
mov esi, edx
mov edx, dword [ebp + 8]
shr esi, 5
add esi, ebx
jmp 0x43605d
lea esi, [ebx + 0x20000]
mov eax, dword [0x4c43dc]
cmp esi, eax
jbe 0x436068
mov esi, eax
cmp cl, 2
jne 0x43609e
test edx, edx
je 0x43609e
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
push ecx
mov bl, 1
call fcn.004900cf
add esp, 4
test esi, esi
js 0x4360a2
push esi
call fcn.0048eaf4
add esp, 4
test eax, eax
je 0x4360a2
mov edx, dword [ebp - 0xc]
mov byte [edx + 0x14], 2
jmp 0x435edb
xor bl, bl
jmp 0x436081
test bl, bl
je 0x4360bb
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
mov dword [eax + 0x10], 0
mov dword [ecx], 0x4ca0b8
jmp 0x4360c5
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
xor ecx, ecx
mov word [eax], cx
mov edx, dword [ebp - 0xc]
push 0x4acd84
push str.Out_of_memory.
mov ecx, 0x4ca140
mov dword [edx + 0xc], 0
call fcn.00430750
jmp 0x435f1c
lea eax, [ebp - 0x8534]
cmp dword [edi + 8], eax
jne 0x4360fd
mov esi, dword [edi + 0xc]
shr esi, 1
mov dword [ebp - 0x28], esi
jmp 0x43611a
lea eax, [ebp - 0x8534]
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x436106
sub eax, esi
sar eax, 1
mov esi, eax
mov dword [ebp - 0x28], eax
lea eax, [esi + 1]
lea ebx, [eax + eax]
cmp dl, 2
jne 0x4361a7
cmp dword [0x4ca0f0], 0
mov ebx, esi
jne 0x4362a7
cmp esi, 0xffffffff
jne 0x436157
lea eax, [ebp - 0x8534]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x436146
sub eax, edx
sar eax, 1
mov ebx, eax
test ebx, ebx
je 0x43618e
lea edi, [ebx + 1]
mov esi, 0x4ca0e4
call fcn.004041f0
test eax, eax
je 0x4362a7
mov eax, dword [0x4ca0f0]
push ebx
lea ecx, [ebp - 0x8534]
push ecx
push eax
mov esi, eax
call fcn.00491764
add esp, 0xc
xor edx, edx
mov word [esi + ebx*2], dx
mov ecx, 0x4ca0e4
call fcn.00404270
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, dword [0x4c43dc]
jbe 0x4361d7
cmp ebx, dword [edi + 0x10]
jbe 0x4361d7
push 0x4acd84
push 0x4bd738
mov ecx, 0x4ca140
call fcn.00430750
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jae 0x4361fb
push 4
xor al, al
mov ecx, edi
call fcn.00478950
mov eax, 1
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [edi + 0x15]
test al, 2
je 0x436211
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 0x43623e
mov cl, byte [edi + 0x14]
cmp cl, 1
jbe 0x43627a
cmp cl, 2
je 0x4362c1
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
and byte [edi + 0x15], 0x7f
mov dword [edi + 0x10], esi
mov esi, dword [ebp - 0x28]
mov dword [edi + 8], eax
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x8534]
cmp eax, ecx
je 0x436259
lea edx, [esi + esi]
push edx
push ecx
push eax
call fcn.0048f4e0
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 - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x80
ja 0x4362c1
cmp ebx, 8
ja 0x43628e
mov esi, 8
jmp 0x43629c
mov eax, 0x10
cmp eax, ebx
sbb esi, esi
and esi, 0x70
add esi, eax
mov eax, esi
call fcn.00472b00
test eax, eax
jne 0x4362b8
xor eax, eax
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov byte [edi + 0x14], 1
jmp 0x436231
cmp ebx, 0x20
jae 0x4362d0
mov esi, 0x20
jmp 0x436348
cmp ebx, 0x208
jae 0x4362df
mov esi, 0x208
jmp 0x436348
cmp ebx, 0x50000
jae 0x43631a
mov dword [ebp + 8], ebx
fild dword [ebp + 8]
test ebx, ebx
jns 0x4362f7
fadd qword [0x4bf1a0]
fmul qword [0x4bf1d8]
fnstcw word [ebp + 0xa]
movzx eax, word [ebp + 0xa]
or eax, 0xc00
mov dword [ebp - 0x30], eax
fldcw word [ebp - 0x30]
fistp qword [ebp - 0x34]
mov esi, dword [ebp - 0x34]
fldcw word [ebp + 0xa]
jmp 0x436348
cmp ebx, 0x320000
jae 0x43632a
lea esi, [ebx + 0x8000]
jmp 0x436348
cmp ebx, 0xc80000
jae 0x436342
mov eax, 0x51eb851f
mul ebx
mov esi, edx
shr esi, 5
add esi, ebx
jmp 0x436348
lea esi, [ebx + 0x20000]
mov eax, dword [0x4c43dc]
cmp esi, eax
jbe 0x436353
mov esi, eax
cmp cl, 2
jne 0x436386
cmp dword [edi + 0x10], 0
je 0x436386
mov ecx, dword [edi + 8]
push ecx
mov bl, 1
call fcn.004900cf
add esp, 4
test esi, esi
js 0x43638a
push esi
call fcn.0048eaf4
add esp, 4
test eax, eax
je 0x43638a
mov byte [edi + 0x14], 2
jmp 0x436231
xor bl, bl
jmp 0x43636c
test bl, bl
je 0x43639e
mov dword [edi + 0x10], 0
mov dword [edi + 8], 0x4ca0b8
jmp 0x4363a6
mov edx, dword [edi + 8]
xor eax, eax
mov word [edx], ax
push 0x4acd84
push str.Out_of_memory.
mov ecx, 0x4ca140
mov dword [edi + 0xc], 0
call fcn.00430750
lea esp, [ebp - 0x8544]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4