Function at 0x4024d0
Capabilities:
Get memory capacity
Set uefi variable

Disassembly:
sub esp, 0x50
mov eax, dword [0x4612b0]
xor eax, esp
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
push ebx
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x54]
push edi
mov edi, eax
shr edi, 1
cmp edi, eax
jae 0x4025d1
mov ecx, dword [esi + 0x14]
xor edx, edx
mov eax, edi
div ecx
mov ebp, edx
cmp ebp, ecx
jbe 0x402517
call fcn.004392c0
mov ebx, 0x10
cmp dword [esi + 0x18], ebx
jb 0x40252a
mov ecx, dword [esi + 4]
mov dword [esp + 0x14], ecx
jmp 0x402531
lea eax, [esi + 4]
mov dword [esp + 0x14], eax
cmp edi, dword [esi + 0x4c]
jbe 0x40253b
call fcn.004392c0
cmp dword [esi + 0x50], ebx
jb 0x402545
mov eax, dword [esi + 0x3c]
jmp 0x402548
lea eax, [esi + 0x3c]
mov bl, byte [eax + edi]
mov edx, dword [esp + 0x14]
xor bl, byte [edx + ebp]
cmp edi, dword [esi + 0x4c]
jbe 0x40255c
call fcn.004392c0
cmp dword [esi + 0x50], 0x10
jb 0x402567
mov eax, dword [esi + 0x3c]
jmp 0x40256a
lea eax, [esi + 0x3c]
mov byte [eax + edi], bl
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
push 0
shr ebp, 0x18
call fcn.0043a6c4
imul eax, eax, 0x63
add esp, 4
cmp ebp, eax
jbe 0x4025c7
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetFirmwareEnvironmentVariableA]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call dword [sym.imp.USER32.dll_GetActiveWindow]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
call dword [sym.imp.USER32.dll_GetFocus]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
inc edi
cmp edi, dword [esi + 0x54]
jb 0x402503
mov ebp, dword [esi + 0x54]
xor edi, edi
sub ebp, 1
je 0x402646
jmp 0x4025e0
cmp ebp, dword [esi + 0x4c]
jbe 0x4025ea
call fcn.004392c0
mov ebx, 0x10
cmp dword [esi + 0x50], ebx
jb 0x4025fd
mov eax, dword [esi + 0x3c]
mov dword [esp + 0x14], eax
jmp 0x402604
lea ecx, [esi + 0x3c]
mov dword [esp + 0x14], ecx
cmp edi, dword [esi + 0x4c]
jbe 0x40260e
call fcn.004392c0
cmp dword [esi + 0x50], ebx
jb 0x402618
mov eax, dword [esi + 0x3c]
jmp 0x40261b
lea eax, [esi + 0x3c]
mov bl, byte [eax + edi]
mov edx, dword [esp + 0x14]
xor bl, byte [edx + ebp]
cmp edi, dword [esi + 0x4c]
jbe 0x40262f
call fcn.004392c0
cmp dword [esi + 0x50], 0x10
jb 0x40263a
mov eax, dword [esi + 0x3c]
jmp 0x40263d
lea eax, [esi + 0x3c]
mov byte [eax + edi], bl
inc edi
dec ebp
cmp edi, ebp
jb 0x4025e0
mov ebx, dword [esi + 0x4c]
mov ebp, dword [esp + 0x20]
lea edi, [ebp + 4]
xor eax, eax
mov dword [ebp + 0x18], 7
mov dword [ebp + 0x14], 0
mov dword [esp + 0x1c], edi
mov word [edi], ax
cmp ebx, 0xffffffff
jne 0x402673
call fcn.00438359
jmp 0x40267b
cmp ebx, 0x7ffffffe
jbe 0x402680
call fcn.00438359
mov eax, dword [ebp + 0x18]
cmp eax, ebx
jae 0x4026aa
mov ecx, dword [ebp + 0x14]
push ecx
push ebx
push ebp
call fcn.004035f0
test ebx, ebx
jbe 0x40270b
cmp ebx, 1
jne 0x4026d1
cmp dword [ebp + 0x18], 8
jb 0x4026c8
mov eax, dword [edi]
xor ecx, ecx
mov word [eax], cx
jmp 0x4026f6
test ebx, ebx
jne 0x402694
mov dword [ebp + 0x14], ebx
cmp eax, 8
jb 0x4026bf
mov eax, dword [edi]
xor edx, edx
mov word [eax], dx
jmp 0x40270b
mov eax, edi
xor edx, edx
mov word [eax], dx
jmp 0x40270b
mov eax, edi
xor ecx, ecx
mov word [eax], cx
jmp 0x4026f6
cmp dword [ebp + 0x18], 8
jb 0x4026db
mov edx, edi
mov edi, dword [edx]
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, ebx
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [esp + 0x1c]
cmp dword [ebp + 0x18], 8
mov dword [ebp + 0x14], ebx
jb 0x402703
mov eax, dword [edi]
jmp 0x402705
mov eax, edi
xor ecx, ecx
mov word [eax + ebx*2], cx
mov ecx, dword [ebp + 0x18]
cmp ecx, 8
jb 0x40271b
mov edx, dword [edi]
mov dword [esp + 0x14], edx
jmp 0x402721
mov edx, edi
mov dword [esp + 0x14], edi
test edx, edx
je 0x402749
cmp ecx, 8
jb 0x40272e
mov eax, dword [edi]
jmp 0x402730
mov eax, edi
cmp eax, edx
ja 0x402749
cmp ecx, 8
jb 0x40273d
mov eax, dword [edi]
jmp 0x40273f
mov eax, edi
mov ecx, dword [ebp + 0x14]
lea eax, [eax + ecx*2]
cmp edx, eax
jbe 0x40274e
call fcn.004392c0
mov edi, dword [esi + 0x50]
lea eax, [esi + 0x3c]
cmp edi, 0x10
jb 0x40275d
mov ecx, dword [eax]
jmp 0x40275f
mov ecx, eax
mov edx, dword [esi + 0x4c]
lea ebx, [ecx + edx]
test ebx, ebx
je 0x402785
cmp edi, 0x10
jb 0x402772
mov ecx, dword [eax]
jmp 0x402774
mov ecx, eax
cmp ecx, ebx
ja 0x402785
cmp edi, 0x10
jb 0x40277f
mov eax, dword [eax]
add eax, edx
cmp ebx, eax
jbe 0x40278a
call fcn.004392c0
mov edx, dword [esi + 0x50]
lea eax, [esi + 0x3c]
cmp edx, 0x10
jb 0x402799
mov edi, dword [eax]
jmp 0x40279b
mov edi, eax
test edi, edi
je 0x4027be
cmp edx, 0x10
jb 0x4027a8
mov ecx, dword [eax]
jmp 0x4027aa
mov ecx, eax
cmp ecx, edi
ja 0x4027be
cmp edx, 0x10
jb 0x4027b5
mov eax, dword [eax]
mov ecx, dword [esi + 0x4c]
add ecx, eax
cmp edi, ecx
jbe 0x4027c3
call fcn.004392c0
mov ecx, ebx
sub ecx, edi
cmp ebp, 0xfffffffc
je 0x402808
mov esi, dword [ebp + 0x18]
mov eax, dword [esp + 0x1c]
cmp esi, 8
jb 0x4027dc
mov edx, dword [eax]
jmp 0x4027de
mov edx, eax
mov ebp, dword [esp + 0x14]
lea ecx, [ebp + ecx*2]
mov ebp, dword [esp + 0x20]
mov ebp, dword [ebp + 0x14]
lea edx, [edx + ebp*2]
cmp ecx, edx
ja 0x4027ff
cmp esi, 8
jb 0x4027fb
mov eax, dword [eax]
cmp ecx, eax
jae 0x402804
call fcn.004392c0
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov eax, edi
cmp edi, ebx
je 0x402821
movsx dx, byte [eax]
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, ebx
jne 0x402812
lea eax, [esp + 0x13]
mov byte [esp + 0x13], 0
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x402830
sub eax, edx
je 0x402887
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
lea edx, [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
call fcn.004393a7
call fcn.004393a7
call fcn.004393a7
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_GetCaretPos]
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
xor ecx, esp
call fcn.00438dc1
add esp, 0x50
ret 4