Function at 0x401630
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push 0xffffffffffffffff
push 0x40411b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x834
push ebx
push esi
push edi
mov ebx, ecx
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::BeginWaitCursor
mov esi, dword [esp + 0x850]
mov al, byte [esp + 0x854]
xor edi, edi
mov ecx, esi
mov edx, dword [esi]
mov dword [esp + 0x848], edi
mov word [esp + 0x14], di
mov word [esp + 0x16], di
mov byte [esp + 0x18], 0
mov byte [esp + 0x19], 0
mov byte [esp + 0x1a], 0
mov byte [esp + 0x1b], al
mov word [esp + 0x34], di
mov word [esp + 0x36], di
mov byte [esp + 0x38], 0
mov byte [esp + 0x39], 1
mov byte [esp + 0x3a], 0xfa
mov byte [esp + 0x3b], 0
call dword [edx + 0x10]
cmp eax, 2
jne 0x4016cd
mov dword [esp + 0x10], 0x800
mov dword [esp + 0x20], 1
jmp 0x4016e9
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
cmp eax, 4
jne 0x401a3f
mov dword [esp + 0x10], 0x200
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x858]
push ebp
and ecx, 0xffff
push 0x40605c
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov ebp, eax
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 0xc]
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_LoadResource]
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 0xc]
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, eax
mov eax, 0xfff001
mul ecx
mov ebp, edx
mov edx, dword [esp + 0x860]
shr ebp, 6
push edx
mov ecx, ebx
mov dword [esp + 0x44], ebp
call sub.MFC42.DLL_CWnd::GetDlgItem
mov edx, dword [eax + 0x20]
lea ecx, [ebp*8]
and ecx, 0xffff
shl ecx, 0x10
push ecx
push 0
push 0x401
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
test ebp, ebp
mov dword [esp + 0x2c], 0
jle 0x401a24
mov eax, 0xfffffffd
mov ebp, edi
sub eax, edi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], eax
mov byte [esp + 0x1e], 0xbd
mov eax, dword [ebp]
xor ecx, ecx
cmp eax, 0x1fc00000
setl cl
dec ecx
mov edx, dword [esi]
and ecx, 0xfff20000
push 0
add ecx, 0x100000
push 0
add ecx, eax
push 8
lea eax, [esp + 0x24]
mov dword [esp + 0x24], ecx
push 0
push eax
mov ecx, esi
call dword [edx + 0xc]
mov al, byte [ebx + 0x64]
test al, al
jne 0x4017db
push 0x20
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp + 4]
xor edi, edi
mov byte [esp + 0x13], 1
mov dword [esp + 0x20], ecx
mov al, byte [esp + 0x13]
test al, al
je 0x401a14
mov byte [esp + 0x1e], 0xbc
mov eax, dword [ebp]
xor edx, edx
cmp eax, 0x1fc00000
setl dl
dec edx
push 0
and edx, 0xfff20000
push 0
add edx, 0x100000
push 8
add edx, eax
mov eax, dword [esi]
lea ecx, [esp + 0x24]
push 0
add edx, edi
push ecx
mov ecx, esi
mov dword [esp + 0x2c], edx
call dword [eax + 0xc]
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x40186a
mov ebp, dword [esp + 0x20]
mov edx, eax
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x14]
mov eax, dword [esi]
push 0
push 0
push ecx
push 0
push ebp
mov ecx, esi
call dword [eax + 0xc]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
add ebp, ecx
dec eax
mov dword [esp + 0x28], eax
jne 0x401842
mov ebp, dword [esp + 0x34]
mov al, byte [ebx + 0x64]
test al, al
jne 0x401879
push 0x20
call dword [sym.imp.KERNEL32.dll_Sleep]
mov byte [esp + 0x1e], 0xfa
mov eax, dword [ebp]
xor edx, edx
cmp eax, 0x1fc00000
setl dl
dec edx
push 0
and edx, 0xfff20000
lea ecx, [esp + 0x48]
add edx, 0x100000
add edx, eax
lea eax, [edx + edi - 0x1d000000]
mov edx, dword [esi]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
push eax
push 8
lea eax, [esp + 0x24]
push ecx
push eax
mov ecx, esi
call dword [edx + 0xc]
mov eax, dword [esp + 0x24]
cmp eax, 1
jle 0x401902
mov ecx, dword [esp + 0x14]
mov edx, eax
dec edx
lea ebp, [esp + ecx + 0x44]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x14]
mov eax, dword [esi]
push 0
push ecx
push 8
lea edx, [esp + 0x44]
push ebp
push edx
mov ecx, esi
call dword [eax + 0xc]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
add ebp, ecx
dec eax
mov dword [esp + 0x28], eax
jne 0x4018d7
mov ebp, dword [esp + 0x34]
mov eax, dword [ebp]
xor ecx, ecx
cmp eax, 0x1fc00000
setl cl
dec ecx
and ecx, 0xfff20000
add ecx, 0x100000
add ecx, eax
add ecx, edi
and ecx, 0xf0ffff
cmp ecx, 0xc0f800
je 0x40194c
xor eax, eax
mov edx, dword [esp + 0x20]
mov cl, byte [edx + eax]
mov dl, byte [esp + eax + 0x44]
cmp cl, dl
je 0x401944
mov byte [esp + 0x13], 0
inc eax
cmp eax, 0x800
jl 0x401930
mov edx, dword [esp + 0x860]
mov ecx, ebx
push edx
call sub.MFC42.DLL_CWnd::GetDlgItem
mov edx, dword [esp + 0x20]
mov ecx, eax
mov eax, dword [esp + 0x30]
push 0
add eax, edx
mov ecx, dword [ecx + 0x20]
cdq
and edx, 0x7ff
add eax, edx
mov edx, dword [esp + 0x30]
sar eax, 0xb
lea eax, [eax + edx*8]
push eax
push 0x402
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov edx, dword [esp + 0x860]
mov ecx, ebx
push edx
call sub.MFC42.DLL_CWnd::GetDlgItem
mov eax, dword [eax + 0x20]
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x860]
push ecx
mov ecx, ebx
call sub.MFC42.DLL_CWnd::GetDlgItem
mov edx, dword [eax + 0x20]
push 0x105
push 0
push 0
push edx
call dword [sym.imp.USER32.dll_RedrawWindow]
mov ecx, dword [esp + 0x20]
add edi, 0x800
add ecx, 0x800
cmp edi, 0x4000
mov dword [esp + 0x20], ecx
jl 0x4017e9
mov al, byte [esp + 0x13]
test al, al
je 0x401a14
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
inc edx
sub ecx, 0x4004
add ebp, 0x4004
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ebp
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jl 0x401793
mov dword [esp + 0x84c], 0xffffffff
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::EndWaitCursor
pop ebp
jmp 0x401a57
mov dword [esp + 0x848], 0xffffffff
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::EndWaitCursor
mov ecx, dword [esp + 0x840]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x840
ret 0x10