Function at 0x4112d7
Capabilities:
Resolve function by parsing pe exports

Disassembly:
add ecx, 0x1790
jmp 0x411c80
push esi
mov esi, ecx
call fcn.00410060
test eax, eax
jne 0x4112b3
mov eax, 2
pop esi
ret
push 0
push 0
mov ecx, esi
call fcn.00410b30
neg eax
sbb eax, eax
add eax, 2
pop esi
ret
sub esp, 0x84
push ebp
push esi
mov esi, ecx
lea eax, [esp + 0x64]
push eax
lea ecx, [esi + 0x10]
mov dword [esp + 0x30], esi
call fcn.0040e720
lea ecx, [esp + 0x78]
push ecx
lea ecx, [esi + 0x30]
call fcn.0040e720
lea edx, [esp + 0x50]
lea ecx, [esi + 0x50]
push edx
call fcn.0040e720
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edx, dword [esi + 0x80]
mov ebp, eax
mov eax, dword [esi + 0x7c]
and ebp, 0x7fffffff
mov ecx, ebp
sub ecx, eax
mov dword [esp + 8], ecx
fild dword [esp + 8]
sub edx, eax
mov dword [esp + 8], edx
mov dword [esp + 0x24], ebp
fidiv dword [esp + 8]
fmul qword [0x483818]
call fcn.004526e0
cmp eax, 0xff
mov dword [esp + 0x10], eax
jle 0x411355
mov eax, 0xff
mov dword [esp + 0x10], eax
push ebx
mov ebx, 0xff
sub ebx, eax
mov eax, dword [esp + 0x74]
push edi
mov edi, dword [esp + 0x74]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x44], edi
test eax, eax
jbe 0x411478
xor ecx, ecx
lea edx, [edi*4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], eax
jmp 0x411390
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x84]
lea esi, [ecx + eax]
lea eax, [ecx + edx]
mov edx, dword [esp + 0x5c]
add edx, ecx
xor ebp, ebp
mov dword [esp + 0x3c], eax
mov dword [esp + 0x14], edx
test edi, edi
jbe 0x41145d
mov edi, eax
sub edi, esi
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x14]
sub edi, esi
lea ecx, [esi + 1]
mov esi, eax
add edx, 2
sub esi, dword [esp + 0x14]
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], esi
jmp 0x4113e4
mov eax, dword [esp + 0x3c]
movzx edi, byte [eax + ebp*4]
movzx eax, byte [ecx]
mov dword [esp + 0x40], eax
movzx eax, byte [ecx - 1]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + edx]
mov esi, dword [esp + 0x28]
imul eax, ebx
movzx ebx, byte [ecx + 1]
imul ebx, dword [esp + 0x18]
movzx esi, byte [esi + ecx]
add eax, ebx
mov ebx, dword [esp + 0x30]
sar eax, 8
imul esi, ebx
imul edi, ebx
mov byte [edx], al
mov eax, dword [esp + 0x40]
imul eax, dword [esp + 0x18]
add eax, esi
mov esi, dword [esp + 0x20]
sar eax, 8
mov byte [esi + ecx], al
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x18]
add eax, edi
mov edi, dword [esp + 0x44]
sar eax, 8
mov byte [edx - 2], al
inc ebp
add ecx, 4
add edx, 4
cmp ebp, edi
jb 0x4113e0
mov ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x24]
sub dword [esp + 0x10], 1
mov dword [esp + 0x1c], ecx
jne 0x411390
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x48]
push eax
mov dword [esp + 0x54], ecx
lea eax, [esi + 0x50]
push eax
lea ecx, [esp + 0x50]
push ecx
mov ecx, esi
mov dword [esp + 0x60], edx
call fcn.0040ff20
pop edi
pop ebx
test eax, eax
jne 0x4114bb
pop esi
mov eax, 2
pop ebp
add esp, 0x84
ret
cmp ebp, dword [esi + 0x80]
jle 0x4114d7
push 0
push 1
mov ecx, esi
call fcn.00410b30
test eax, eax
mov eax, 2
je 0x4114dc
mov eax, 1
pop esi
pop ebp
add esp, 0x84
ret
sub esp, 0x50
push ebx
push esi
mov ebx, ecx
push edi
lea eax, [esp + 0x20]
lea edi, [ebx + 0x10]
push eax
mov ecx, edi
call fcn.0040e720
lea ecx, [esp + 0x48]
push ecx
lea ecx, [ebx + 0x30]
call fcn.0040e720
lea edx, [esp + 0x34]
lea ecx, [ebx + 0x50]
push edx
call fcn.0040e720
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, eax
and esi, 0x7fffffff
cmp esi, dword [ebx + 0x80]
jle 0x411583
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
push eax
push ecx
push 0
push 0
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.USER32.dll_SetRect]
lea eax, [esp + 0x10]
push eax
mov ecx, eax
push edi
push ecx
mov ecx, ebx
call fcn.0040ff20
test eax, eax
je 0x411577
push 0
push 1
mov ecx, ebx
call fcn.00410b30
test eax, eax
jne 0x4116fe
pop edi
pop esi
mov eax, 2
pop ebx
add esp, 0x50
ret
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
push 0xcc0020
push 0
push 0
push edx
mov edx, dword [esp + 0x44]
push eax
push ecx
push 0
push 0
push edx
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x411577
mov eax, dword [ebx + 0x7c]
mov ecx, dword [ebx + 0x80]
sub esi, eax
mov dword [esp + 0xc], esi
fild dword [esp + 0xc]
sub ecx, eax
mov dword [esp + 0xc], ecx
mov edi, dword [esp + 0x28]
fidiv dword [esp + 0xc]
lea edx, [edi + 0x100]
fmul qword [0x483818]
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
mov dword [esp + 0xc], edx
fild dword [esp + 0xc]
test edx, edx
jge 0x4115f5
fadd dword [0x483930]
fmul qword [0x483990]
fmulp st(1)
call fcn.004526e0
mov ecx, dword [esp + 0x2c]
cdq
and edx, 0xf
add eax, edx
mov esi, eax
sar esi, 4
sub esi, 0x10
mov eax, esi
shl eax, 4
cmp eax, edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], ecx
jge 0x411664
test eax, eax
jl 0x411664
mov edx, dword [esp + 0x20]
push 0xcc0020
push 0
push 0
push edx
push ecx
push eax
mov eax, dword [esp + 0x4c]
push 0
push 0
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x411577
mov ecx, dword [esp + 0x2c]
xor edi, edi
shl esi, 4
lea esp, [esp]
mov eax, esi
sub eax, edi
add eax, 0x10
cmp esi, dword [esp + 0x28]
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], ecx
jge 0x4116c0
test esi, esi
jl 0x4116c0
mov edx, dword [esp + 0x20]
push 0xcc0020
push 0
push esi
push edx
push ecx
sub eax, esi
push eax
mov eax, dword [esp + 0x4c]
push 0
push esi
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x411577
mov ecx, dword [esp + 0x2c]
inc edi
add esi, 0x10
cmp edi, 0x10
jl 0x411670
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
push ecx
push edx
push 0
push 0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_SetRect]
lea ecx, [esp + 0x10]
push ecx
lea eax, [ebx + 0x50]
mov edx, ecx
push eax
push edx
mov ecx, ebx
call fcn.0040ff20
test eax, eax
mov eax, 2
je 0x411703
mov eax, 1
pop edi
pop esi
pop ebx
add esp, 0x50
ret
sub esp, 0x54
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, 1
or ebx, 0xffffffff
lea edi, [esi + 0x50]
push 0
mov ecx, edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], eax
call fcn.0040e750
push 0x258
push 0x320
push 0
push 0
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov edx, dword [esi + 0x78]
mov eax, edx
and eax, 3
add eax, eax
add eax, eax
mov ecx, dword [esp + eax + 0x30]
mov eax, dword [esp + eax + 0x40]
imul ecx, edx
imul eax, edx
lea ebp, [ecx + 0x320]
lea edx, [eax + 0x258]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edx
test ecx, ecx
jge 0x4117ac
sub dword [esp + 0x20], ecx
mov dword [esp + 0x10], 0
test eax, eax
jge 0x4117bc
sub dword [esp + 0x24], eax
mov dword [esp + 0x14], 0
cmp ebp, 0x320
jle 0x4117d7
mov ecx, 0x320
sub ecx, ebp
add dword [esp + 0x28], ecx
mov dword [esp + 0x18], 0x320
cmp edx, 0x258
jle 0x4117f2
mov eax, 0x258
sub eax, edx
add dword [esp + 0x2c], eax
mov dword [esp + 0x1c], 0x258
push 0xff
lea ecx, [esp + 0x24]
push ecx
lea edx, [esi + 0x10]
push edx
lea eax, [esp + 0x1c]
push eax
mov ecx, edi
call fcn.0040e7d0
test eax, eax
jne 0x41181d
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x54
ret
lea ecx, [esp + 0x50]
push ecx
mov ecx, edi
call fcn.0040e720
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
push edx
push eax
push 0
push 0
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.USER32.dll_SetRect]
lea edx, [esp + 0x10]
push edx
push edi
mov eax, edx
push eax
mov ecx, esi
call fcn.0040ff20
test eax, eax
je 0x411810
add dword [esi + 0x78], ebx
jne 0x41186f
push 0
push 1
mov ecx, esi
call fcn.00410b30
test eax, eax
mov eax, 2
je 0x411874
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
sub esp, 0x4c
push esi
mov esi, ecx
cmp dword [esi + 0x70], 0
jne 0x411893
xor eax, eax
pop esi
add esp, 0x4c
ret
push ebx
push ebp
push edi
lea eax, [esp + 0x34]
push eax
lea ecx, [esi + 0x10]
call fcn.0040e720
lea ecx, [esp + 0x48]
lea edi, [esi + 0x50]
push ecx
mov ecx, edi
call fcn.0040e720
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esi + 0x80]
mov ebx, eax
mov eax, dword [esi + 0x7c]
and ebx, 0x7fffffff
mov edx, ebx
sub edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
sub ecx, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], ebx
fidiv dword [esp + 0x10]
fmul qword [0x483818]
call fcn.004526e0
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x40]
push eax
push ebp
push 0
push 0
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x24], eax
call dword [sym.imp.USER32.dll_SetRect]
push 0xff
lea eax, [esp + 0x28]
push eax
lea ecx, [esi + 0x30]
push ecx
mov edx, eax
push edx
mov ecx, edi
call fcn.0040e7d0
test eax, eax
jne 0x411937
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x4c
ret
mov eax, dword [esp + 0x10]
test eax, eax
jbe 0x4119a3
xor edi, edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x4c]
lea ecx, [eax + edi*4]
lea eax, [edx + edi*4]
mov edx, dword [esi + 0x70]
mov dword [esp + 0x14], ecx
add edx, edi
xor ecx, ecx
test ebp, ebp
jbe 0x41199a
mov ebp, dword [esp + 0x14]
sub ebp, eax
mov ebx, eax
mov dword [esp + 0x14], ebp
mov edi, edi
movzx eax, byte [ecx + edx]
add eax, dword [esp + 0x18]
cmp eax, 0xff
jg 0x411981
jne 0x41198a
mov eax, dword [esp + 0x14]
mov eax, dword [eax + ebx]
mov dword [ebx], eax
mov ebp, dword [esp + 0x1c]
inc ecx
add ebx, 4
cmp ecx, ebp
jb 0x411970
mov ebx, dword [esp + 0x20]
add edi, ebp
sub dword [esp + 0x10], 1
jne 0x411945
lea ecx, [esp + 0x24]
push ecx
lea eax, [esi + 0x50]
mov edx, ecx
push eax
push edx
mov ecx, esi
call fcn.0040ff20
test eax, eax
jne 0x4119c7
pop edi
pop ebp
pop ebx
mov eax, 2
pop esi
add esp, 0x4c
ret
cmp ebx, dword [esi + 0x80]
jle 0x4119f6
mov eax, dword [esi + 0x70]
push eax
call fcn.00451890
add esp, 4
push 0
push 1
mov ecx, esi
mov dword [esi + 0x70], 0
call fcn.00410b30
test eax, eax
mov eax, 2
je 0x4119fb
mov eax, 1
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x4c
ret
sub esp, 0x90
push ebp
push esi
mov esi, ecx
xor ebp, ebp
mov dword [esp + 0x28], esi
cmp dword [esi + 0x70], ebp
jne 0x411a30
pop esi
xor eax, eax
pop ebp
add esp, 0x90
ret
push ebx
push edi
lea eax, [esp + 0x78]
push eax
lea ecx, [esi + 0x10]
call fcn.0040e720
lea ecx, [esp + 0x8c]
push ecx
lea ecx, [esi + 0x30]
call fcn.0040e720
lea edx, [esp + 0x64]
lea ecx, [esi + 0x50]
push edx
call fcn.0040e720
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edx, dword [esi + 0x80]
mov edi, eax
mov eax, dword [esi + 0x7c]
and edi, 0x7fffffff
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
sub edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x40], edi
fidiv dword [esp + 0x10]
fmul qword [0x483998]
call fcn.004526e0
mov ebx, dword [esp + 0x80]
mov ecx, 0xffffff01
sub ecx, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x28], ebx
cmp eax, ebp
jbe 0x411c02
xor edx, edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x10], eax
jmp 0x411ad0
mov eax, dword [esp + 0x7c]
lea ecx, [eax + edx*4]
mov eax, dword [esp + 0x90]
lea ebp, [eax + edx*4]
mov eax, dword [esp + 0x68]
lea edi, [eax + edx*4]
mov eax, dword [esi + 0x70]
add eax, edx
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], eax
test ebx, ebx
jbe 0x411be9
mov edx, dword [esp + 0x14]
sub edx, ebp
mov dword [esp + 0x20], edx
mov ebx, ecx
sub ebx, ebp
mov edx, ecx
add edi, 2
sub edx, dword [esp + 0x14]
lea esi, [ebp + 1]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x14], edx
jmp 0x411b38
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x44]
movzx ecx, byte [ecx + eax*4]
movzx edx, byte [esi]
movzx ebx, byte [ebx + esi]
movzx ebp, byte [esi + 1]
mov dword [esp + 0x4c], edx
movzx edx, byte [esi - 1]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x2c]
movzx ecx, byte [eax + ecx]
add ecx, dword [esp + 0x50]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + edi]
mov dword [esp + 0x34], ebx
jns 0x411b75
xor ecx, ecx
jmp 0x411b82
cmp ecx, 0xff
jle 0x411b82
mov ecx, 0xff
mov ebx, ecx
imul ebx, edx
mov eax, 0xff
sub eax, ecx
mov edx, eax
imul edx, ebp
add ebx, edx
sar ebx, 8
mov byte [edi], bl
mov edx, ecx
imul ecx, dword [esp + 0x48]
imul edx, dword [esp + 0x34]
mov ebx, eax
imul eax, dword [esp + 0x24]
imul ebx, dword [esp + 0x4c]
add edx, ebx
mov ebx, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x18]
sar edx, 8
sar ecx, 8
mov byte [ebx + esi], dl
mov ebx, dword [esp + 0x28]
inc eax
mov byte [edi - 2], cl
add esi, 4
add edi, 4
mov dword [esp + 0x18], eax
cmp eax, ebx
jb 0x411b30
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x38]
sub dword [esp + 0x10], 1
mov dword [esp + 0x1c], edx
jne 0x411ad0
mov edi, dword [esp + 0x40]
xor ebp, ebp
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0x54]
mov dword [esp + 0x5c], eax
push edx
lea eax, [esi + 0x50]
push eax
mov eax, edx
mov dword [esp + 0x68], ecx
push eax
mov ecx, esi
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebp
call fcn.0040ff20
test eax, eax
jne 0x411c41
pop edi
pop ebx
pop esi
mov eax, 2
pop ebp
add esp, 0x90
ret
cmp edi, dword [esi + 0x80]
jle 0x411c6b
mov ecx, dword [esi + 0x70]
push ecx
call fcn.00451890
add esp, 4
push ebp
push 1
mov ecx, esi
mov dword [esi + 0x70], ebp
call fcn.00410b30
test eax, eax
mov eax, 2
je 0x411c70
mov eax, 1
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x90
ret
mov eax, dword [ecx + 0x74]
cmp eax, 6
ja case.default.0x411c88
jmp dword [eax*4 + 0x411cb8]
jmp fcn.00410050
jmp 0x4112a0
jmp 0x4112d0
jmp 0x4114f0
jmp 0x411710
jmp 0x411880
jmp 0x411a10
mov eax, 2
ret