Function at 0x41d2d0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x2f4c
call fcn.0049bb70
push ebx
push esi
push edi
push ebp
cmp byte [ecx + 0x22], 0
mov ebp, ecx
je 0x41e36b
mov esi, dword [esp + 0x2f68]
cmp byte [esi + 0x22], 0
je 0x41e36b
mov ecx, dword [esp + 0x2f64]
test ecx, ecx
jne 0x41d325
movsx eax, word [esi + 0x1c]
dec eax
lea ecx, [esp + 0x58]
push eax
mov edi, dword [0xd724c0]
movsx eax, word [esi + 0x1a]
dec eax
push eax
push 0
push 0
push ecx
call edi
jmp 0x41d373
mov edx, dword [ecx + 4]
test edx, edx
jl 0x41e350
cmp dword [ecx], 0
jl 0x41e350
movsx eax, word [esi + 0x1a]
cmp eax, dword [ecx + 8]
jle 0x41e350
movsx eax, word [esi + 0x1c]
cmp eax, dword [ecx + 0xc]
jle 0x41e350
lea edx, [esp + 0x58]
mov eax, dword [ecx]
mov dword [edx], eax
mov ebx, dword [ecx + 4]
mov dword [edx + 4], ebx
mov edi, dword [ecx + 8]
mov dword [edx + 8], edi
mov edi, dword [0xd724c0]
mov eax, dword [ecx + 0xc]
mov dword [edx + 0xc], eax
mov ebx, dword [esp + 0x2f60]
test ebx, ebx
jne 0x41d53c
movsx eax, word [ebp + 0x1c]
dec eax
lea ecx, [esp + 0x44]
push eax
movsx eax, word [ebp + 0x1a]
dec eax
push eax
push 0
push 0
push ecx
call edi
mov ebx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
lea edx, [esp + 0x44]
lea ecx, [esp + 0x7c]
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 4], ebx
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], eax
lea eax, [esp + 0x68]
mov ecx, ebp
push eax
mov ebx, dword [ebp]
push 0
call dword [ebx + 0x10]
test eax, eax
je 0x41e32d
lea eax, [esp + 0x54]
mov ecx, esi
push eax
mov ebx, dword [esi]
push 0
call dword [ebx + 0x10]
test eax, eax
je 0x41e32d
mov eax, dword [esp + 0x4c]
sub eax, dword [esp + 0x44]
mov edx, dword [esp + 0x60]
inc eax
sub edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x50]
sub ebx, dword [esp + 0x7c]
sub eax, dword [esp + 0x48]
lea ecx, [ebx + 1]
inc eax
mov dword [esp + 0x30], eax
lea eax, [edx + 1]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x64]
sub ecx, dword [esp + 0x5c]
fidiv dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [esp + 0x14], eax
fstp dword [esp + 0x20]
fild dword [esp + 0x14]
mov edi, dword [esp + 0x88]
sub edi, dword [esp + 0x80]
lea eax, [edi + 1]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
fidiv dword [esp + 0x14]
sub eax, dword [esp + 0x7c]
imul eax, edx
fstp dword [esp + 0x38]
cdq
idiv ebx
mov ebx, eax
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 0x80]
imul eax, ecx
cdq
idiv edi
xor edi, edi
mov dword [esp + 0x34], eax
cmp dword [esp + 0x28], edi
jle 0x41d4b5
fild dword [esp + 0x58]
fst dword [esp + 0x7c]
lea eax, [ebx + edi]
inc edi
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x20]
fadd st(1)
call fcn.0049bb48
mov dword [esp + edi*4 + 0x78], eax
cmp edi, dword [esp + 0x28]
jl 0x41d492
fstp st(0)
xor ebx, ebx
cmp dword [esp + 0x2f6c], ebx
jne 0x41d51a
cmp dword [esp + 0x2f70], ebx
jne 0x41d51a
mov cl, 8
mov al, byte [esi + 0x21]
cbw
idiv cl
movsx ebx, al
shl ebx, 0x10
mov al, byte [ebp + 0x20]
cbw
idiv cl
movsx eax, al
or ebx, eax
mov al, byte [ebp + 0x21]
cbw
idiv cl
movsx eax, al
shl ebx, 4
shl eax, 0x10
or ebx, eax
mov al, byte [esi + 0x20]
cbw
idiv cl
movsx eax, al
or ebx, eax
cmp byte [esi + 0x24], 0
je 0x41d50e
or ebx, 0x100
cmp byte [ebp + 0x24], 0
je 0x41d51a
or ebx, 0x1000
cmp ebx, 0x42
ja 0x41d58d
je 0x41db1d
cmp ebx, 0x22
je 0x41d88e
cmp ebx, 0x24
je 0x41d9e4
jmp 0x41d5da
lea ecx, [esp + 0x7c]
mov eax, dword [ebx]
mov dword [ecx], eax
mov edx, dword [ebx + 4]
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov dword [ecx + 8], eax
mov edx, dword [ebx + 0xc]
mov dword [ecx + 0xc], edx
movsx eax, word [ebp + 0x1c]
dec eax
lea ecx, [esp + 0x6c]
push eax
movsx eax, word [ebp + 0x1a]
dec eax
push eax
push 0
push 0
push ecx
call edi
lea ecx, [esp + 0x44]
lea edx, [esp + 0x6c]
push ecx
push ebx
push edx
call fcn.0042d6d0
add esp, 0xc
test eax, eax
jne 0x41d3b9
jmp 0x41e37d
cmp ebx, 0x200121
ja 0x41d5a6
je 0x41dd96
cmp ebx, 0x44
je 0x41dc6d
jmp 0x41d5da
cmp ebx, 0x221111
ja 0x41d5ce
je 0x41e09f
cmp ebx, 0x200140
je 0x41ded8
cmp ebx, 0x200141
je 0x41df78
jmp 0x41d5da
cmp ebx, 0x241111
je 0x41e1db
movsx eax, byte [ebp + 0x21]
movsx ecx, byte [ebp + 0x20]
movsx edx, byte [esi + 0x21]
push eax
push ecx
push edx
and bh, 0x11
movsx eax, byte [esi + 0x20]
push eax
push 0x4ad904
call fcn.0043d360
add esp, 0x14
cmp bh, 0x11
jne 0x41d63e
xor edi, edi
mov eax, 1
mov cl, byte [esi + 0x20]
shl eax, cl
test eax, eax
jle 0x41d63e
lea eax, [esp + 0x14]
mov ecx, esi
push eax
push edi
call fcn.0041f6d0
mov eax, dword [esp + 0x14]
push 0
push eax
mov ecx, ebp
push edi
call fcn.0041ee50
inc edi
mov eax, 1
mov cl, byte [esi + 0x20]
shl eax, cl
cmp eax, edi
jg 0x41d613
mov dword [esp + 0x24], 0
cmp dword [esp + 0x30], 0
jle 0x41e317
mov dword [esp + 0x1c], 0
cmp dword [esp + 0x28], 0
jle 0x41d868
cmp byte [ebp + 0x24], 0
lea eax, [esp + 0x3c]
push eax
mov eax, dword [esp + 0x38]
je 0x41d6a2
add eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fmul dword [esp + 0x3c]
fiadd dword [esp + 0x60]
call fcn.0049bb48
mov ecx, dword [esp + 0x20]
push eax
mov edx, dword [esp + ecx*4 + 0x84]
mov ecx, esi
push edx
call fcn.0041f470
jmp 0x41d6cf
add eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fmul dword [esp + 0x3c]
fiadd dword [esp + 0x60]
call fcn.0049bb48
mov ecx, dword [esp + 0x20]
push eax
mov edx, dword [esp + ecx*4 + 0x84]
mov ecx, esi
push edx
call fcn.0041f550
test eax, eax
je 0x41d87f
test byte [esp + 0x2f6c], 1
je 0x41d6ef
test dword [esp + 0x3c], 0xffffff
je 0x41d856
cmp dword [esp + 0x2f70], 0
je 0x41d7fb
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2f70]
and eax, 0xff0000
shr eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
fild qword [esp + 0x14]
fmul dword [ecx]
call fcn.0049bb48
mov edi, eax
mov ecx, dword [esp + 0x2f70]
xor eax, eax
mov al, byte [esp + 0x3d]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
fild qword [esp + 0x14]
fmul dword [ecx + 4]
call fcn.0049bb48
mov ecx, dword [esp + 0x2f70]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
and eax, 0xff
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
fild qword [esp + 0x14]
fmul dword [ecx + 8]
call fcn.0049bb48
mov ebx, eax
mov ecx, dword [esp + 0x2f70]
mov eax, dword [esp + 0x3c]
shr eax, 0x18
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
fild qword [esp + 0x14]
fmul dword [ecx + 0xc]
call fcn.0049bb48
cmp edi, 0x100
jl 0x41d7af
mov edi, 0xff
cmp dword [esp + 0x20], 0x100
jl 0x41d7c1
mov dword [esp + 0x20], 0xff
cmp ebx, 0x100
jl 0x41d7ce
mov ebx, 0xff
cmp eax, 0x100
jl 0x41d7da
mov eax, 0xff
shl eax, 0x10
and edi, 0xff
shl edi, 0x10
mov al, byte [esp + 0x20]
shl eax, 8
and ebx, 0xff
or eax, edi
or eax, ebx
mov dword [esp + 0x3c], eax
test byte [esp + 0x2f6c], 0x10
je 0x41d80f
mov ecx, dword [esp + 0x4c]
sub ecx, dword [esp + 0x1c]
jmp 0x41d817
mov ecx, dword [esp + 0x44]
add ecx, dword [esp + 0x1c]
test byte [esp + 0x2f6c], 0x20
je 0x41d82b
mov edx, dword [esp + 0x50]
sub edx, dword [esp + 0x24]
jmp 0x41d833
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x24]
mov eax, dword [esp + 0x2f6c]
mov ebx, dword [esp + 0x3c]
cmp byte [ebp + 0x24], 0
push eax
push ebx
push edx
push ecx
mov ecx, ebp
je 0x41d851
call fcn.0041eff0
jmp 0x41d856
call fcn.0041f190
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x28]
jl 0x41d664
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x30]
jl 0x41d651
jmp 0x41e317
push str.MarniBits::Blt
push str.color
jmp 0x41e375
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e317
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffe
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41d9cd
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x24]
xor ebx, ebx
mov edx, dword [ecx]
xor ecx, ecx
mov cx, word [eax + edx*2]
mov edx, ecx
mov dword [esp + 0x10], ecx
mov bl, byte [esi + 0x17]
mov cl, byte [esi + 0x16]
shr edx, cl
and ebx, edx
mov cl, 8
sub cl, byte [esi + 0x18]
xor edx, edx
mov dl, byte [esi + 0x14]
mov edi, dword [esp + 0x10]
shl ebx, cl
mov cl, 8
sub cl, byte [ebp + 0x18]
sar ebx, cl
mov cl, byte [ebp + 0x16]
shl bx, cl
mov cl, byte [esi + 0x13]
shr edi, cl
and edx, edi
mov cl, 8
sub cl, byte [esi + 0x15]
mov edi, dword [esp + 0x10]
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0x15]
sar edx, cl
mov cl, byte [ebp + 0x13]
shl dx, cl
or bx, dx
mov cl, byte [esi + 0xd]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [esi + 0xf]
and edx, edi
mov edi, dword [esp + 0x10]
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0xf]
sar edx, cl
mov cl, byte [ebp + 0xd]
shl dx, cl
or bx, dx
mov cl, byte [esi + 0x10]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0x11]
sub cl, byte [esi + 0x12]
and edx, edi
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0x12]
sar edx, cl
mov cl, byte [ebp + 0x10]
add dword [esp + 0x24], 4
shl dx, cl
or bx, dx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x1c], 2
mov word [ecx], bx
dec dword [esp + 0x14]
jne 0x41d90b
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
jl 0x41d8b6
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e317
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffe
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41db06
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx]
add dword [esp + 0x24], 4
mov ebx, dword [eax + edx*4]
mov dword [esp + 0x10], ebx
xor ebx, ebx
mov bl, byte [esi + 0x17]
mov edx, dword [esp + 0x10]
mov cl, byte [esi + 0x16]
mov edi, dword [esp + 0x10]
shr edx, cl
and ebx, edx
mov cl, 8
sub cl, byte [ebp + 0x18]
xor edx, edx
shr ebx, cl
mov cl, byte [ebp + 0x16]
mov dl, byte [esi + 0x14]
shl bx, cl
mov cl, byte [esi + 0x13]
shr edi, cl
and edx, edi
mov cl, 8
sub cl, byte [ebp + 0x15]
mov edi, dword [esp + 0x10]
shr edx, cl
mov cl, byte [ebp + 0x13]
shl dx, cl
or bx, dx
mov cl, byte [esi + 0xd]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [ebp + 0xf]
and edx, edi
mov edi, dword [esp + 0x10]
shr edx, cl
mov cl, byte [ebp + 0xd]
shl dx, cl
or bx, dx
mov cl, byte [esi + 0x10]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0x11]
sub cl, byte [ebp + 0x12]
and edx, edi
shr edx, cl
mov cl, byte [ebp + 0x10]
shl dx, cl
or bx, dx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x1c], 2
mov word [ecx], bx
dec dword [esp + 0x14]
jne 0x41da61
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
jl 0x41da0c
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e317
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x34]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffc
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41dc56
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x24]
xor edx, edx
mov ebx, dword [ecx]
mov dx, word [eax + ebx*2]
xor ebx, ebx
mov dword [esp + 0x10], edx
xor edx, edx
mov dl, byte [esi + 0x14]
mov edi, dword [esp + 0x10]
mov cl, byte [esi + 0x13]
mov bl, byte [esi + 0x17]
shr edi, cl
and edx, edi
mov cl, 8
sub cl, byte [esi + 0x15]
mov edi, dword [esp + 0x10]
shl edx, cl
xor ecx, ecx
mov cl, byte [ebp + 0x14]
and edx, ecx
mov cl, byte [ebp + 0x13]
shl edx, cl
mov cl, byte [esi + 0x16]
shr edi, cl
and ebx, edi
mov cl, 8
sub cl, byte [esi + 0x18]
mov edi, dword [esp + 0x10]
shl ebx, cl
xor ecx, ecx
mov cl, byte [ebp + 0x17]
and ebx, ecx
mov cl, byte [ebp + 0x16]
shl ebx, cl
or edx, ebx
mov cl, byte [esi + 0x10]
shr edi, cl
xor ebx, ebx
mov cl, 8
mov bl, byte [esi + 0x11]
sub cl, byte [esi + 0x12]
and ebx, edi
mov edi, dword [esp + 0x10]
shl ebx, cl
xor ecx, ecx
mov cl, byte [ebp + 0x11]
and ebx, ecx
mov cl, byte [ebp + 0x10]
shl ebx, cl
or edx, ebx
mov cl, byte [esi + 0xd]
shr edi, cl
xor ebx, ebx
mov cl, 8
mov bl, byte [esi + 0xe]
sub cl, byte [esi + 0xf]
and ebx, edi
shl ebx, cl
xor ecx, ecx
mov cl, byte [ebp + 0xe]
and ebx, ecx
add dword [esp + 0x24], 4
mov cl, byte [ebp + 0xd]
shl ebx, cl
or edx, ebx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x1c], 4
mov dword [ecx], edx
dec dword [esp + 0x14]
jne 0x41db9a
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
jl 0x41db45
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e317
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x34]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffc
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41dd7f
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx]
add dword [esp + 0x24], 4
mov ebx, dword [eax + edx*4]
mov dword [esp + 0x10], ebx
xor ebx, ebx
mov cl, byte [ebp + 0x17]
mov edx, dword [esp + 0x10]
and cl, byte [esi + 0x17]
mov edi, dword [esp + 0x10]
mov bl, cl
mov cl, byte [esi + 0x16]
shr edx, cl
and ebx, edx
mov cl, byte [ebp + 0x16]
shl ebx, cl
mov cl, byte [ebp + 0xe]
xor edx, edx
and cl, byte [esi + 0xe]
mov dl, cl
mov cl, byte [esi + 0xd]
shr edi, cl
and edx, edi
mov cl, byte [ebp + 0xd]
shl edx, cl
or ebx, edx
mov cl, byte [ebp + 0x14]
and cl, byte [esi + 0x14]
xor edx, edx
mov dl, cl
mov edi, dword [esp + 0x10]
mov cl, byte [esi + 0x13]
shr edi, cl
and edx, edi
mov cl, byte [ebp + 0x13]
shl edx, cl
or ebx, edx
mov cl, byte [ebp + 0x11]
and cl, byte [esi + 0x11]
xor edx, edx
mov dl, cl
mov edi, dword [esp + 0x10]
mov cl, byte [esi + 0x10]
shr edi, cl
and edx, edi
mov cl, byte [ebp + 0x10]
shl edx, cl
or ebx, edx
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x1c], 4
mov dword [ecx], ebx
dec dword [esp + 0x14]
jne 0x41dcea
inc dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x30]
jl 0x41dc95
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], ecx
jle 0x41e317
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffe
add dword [esp + 0x1c], ecx
cmp dword [esp + 0x28], 0
jle 0x41dec1
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x2c]
xor edi, edi
mov edx, dword [ecx]
xor ebx, ebx
xor ecx, ecx
mov cl, byte [edx + eax]
mov edx, ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x20]
add dword [esp + 0x2c], 4
mov di, word [ecx + edx*2]
mov edx, edi
mov dword [esp + 0x10], edi
mov bl, byte [esi + 0x14]
mov cl, byte [esi + 0x13]
shr edx, cl
and ebx, edx
mov cl, 8
sub cl, byte [esi + 0x15]
xor edx, edx
shl ebx, cl
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [ebp + 0x15]
shr ebx, cl
mov cl, byte [ebp + 0x13]
shl bx, cl
mov cl, byte [esi + 0xd]
shr edi, cl
and edx, edi
mov cl, 8
sub cl, byte [esi + 0xf]
mov edi, dword [esp + 0x10]
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0xf]
shr edx, cl
mov cl, byte [ebp + 0xd]
shl dx, cl
or bx, dx
mov cl, byte [esi + 0x10]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0x11]
sub cl, byte [esi + 0x12]
and edx, edi
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0x12]
shr edx, cl
mov cl, byte [ebp + 0x10]
shl dx, cl
or bx, dx
mov ecx, dword [esp + 0x24]
add dword [esp + 0x24], 2
mov word [ecx], bx
dec dword [esp + 0x14]
jne 0x41de1b
inc dword [esp + 0x40]
mov eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x30]
jl 0x41ddc6
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x14], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x7c], eax
jle 0x41e317
mov ebx, dword [esp + 0x7c]
xor edi, edi
movsx eax, word [ebp + 0x1e]
and eax, 0xfffffffc
add dword [esp + 0x7c], eax
cmp dword [esp + 0x28], edi
jle 0x41df65
lea eax, [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
add ebx, 4
push ecx
push edi
mov ecx, esi
inc edi
call fcn.0041f550
mov edx, dword [esp + 0x10]
mov cl, byte [ebp + 0xd]
and edx, 0xff0000
xor eax, eax
shr edx, 0x10
mov al, byte [esp + 0x11]
shl edx, cl
mov cl, byte [ebp + 0x10]
shl eax, cl
or edx, eax
mov cl, byte [ebp + 0x13]
mov eax, dword [esp + 0x10]
and eax, 0xff
shl eax, cl
or edx, eax
cmp edi, dword [esp + 0x28]
mov dword [ebx - 4], edx
jl 0x41df17
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x30]
jl 0x41df00
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], ecx
jle 0x41e317
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x40]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
and ecx, 0xfffffffc
add dword [esp + 0x1c], ecx
cmp dword [esp + 0x28], 0
jle 0x41e088
lea ecx, [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x2c]
xor edi, edi
mov edx, dword [ecx]
xor ebx, ebx
xor ecx, ecx
mov cl, byte [edx + eax]
mov edx, ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x20]
add dword [esp + 0x2c], 4
mov di, word [ecx + edx*2]
mov edx, edi
mov dword [esp + 0x10], edi
mov bl, byte [esi + 0x14]
mov cl, byte [esi + 0x13]
shr edx, cl
and ebx, edx
mov cl, 8
sub cl, byte [esi + 0x15]
xor edx, edx
shl ebx, cl
mov cl, byte [ebp + 0x13]
mov dl, byte [esi + 0x11]
shl ebx, cl
mov cl, byte [esi + 0x10]
shr edi, cl
and edx, edi
mov cl, 8
sub cl, byte [esi + 0x12]
mov edi, dword [esp + 0x10]
shl edx, cl
mov cl, byte [ebp + 0x10]
shl edx, cl
or ebx, edx
mov cl, byte [esi + 0xd]
shr edi, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [esi + 0xf]
and edx, edi
shl edx, cl
mov cl, byte [ebp + 0xd]
shl edx, cl
or ebx, edx
mov ecx, dword [esp + 0x24]
add dword [esp + 0x24], 4
mov dword [ecx], ebx
dec dword [esp + 0x14]
jne 0x41dffd
inc dword [esp + 0x40]
mov eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x30]
jl 0x41dfa8
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x1c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e12f
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41e121
lea edx, [esp + 0x7c]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov ebx, dword [edx]
xor ecx, ecx
inc edi
add edx, 4
mov cl, byte [ebx + eax]
dec dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov byte [edi - 1], cl
jne 0x41e109
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x30], eax
jg 0x41e0c3
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x68]
mov dword [esp + 0x7c], 0x100
mov dword [esp + 0x14], eax
xor ecx, ecx
mov eax, dword [esp + 0x14]
add dword [esp + 0x14], 2
mov cx, word [eax]
add edi, 2
xor eax, eax
mov edx, ecx
mov dword [esp + 0x10], ecx
mov cl, byte [esi + 0x13]
mov al, byte [esi + 0x14]
mov ebx, dword [esp + 0x10]
shr edx, cl
and eax, edx
mov cl, 8
sub cl, byte [esi + 0x15]
xor edx, edx
shl eax, cl
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [ebp + 0x15]
sar eax, cl
mov cl, byte [ebp + 0x13]
shl ax, cl
mov cl, byte [esi + 0xd]
shr ebx, cl
and edx, ebx
mov cl, 8
sub cl, byte [esi + 0xf]
mov ebx, dword [esp + 0x10]
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0xf]
sar edx, cl
mov cl, byte [ebp + 0xd]
shl dx, cl
or ax, dx
mov cl, byte [esi + 0x10]
shr ebx, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0x11]
sub cl, byte [esi + 0x12]
and edx, ebx
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0x12]
sar edx, cl
mov cl, byte [ebp + 0x10]
shl dx, cl
or ax, dx
mov word [edi - 2], ax
dec dword [esp + 0x7c]
jne 0x41e143
jmp 0x41e317
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push eax
push ecx
mov ecx, ebp
call fcn.0041eba0
mov dword [esp + 0x1c], 0
cmp dword [esp + 0x30], 0
mov dword [esp + 0x20], eax
jle 0x41e26b
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x38]
fiadd dword [esp + 0x5c]
call fcn.0049bb48
push eax
mov ecx, esi
push 0
call fcn.0041eba0
movsx ecx, word [ebp + 0x1e]
add dword [esp + 0x20], ecx
cmp dword [esp + 0x28], 0
jle 0x41e25d
lea edx, [esp + 0x7c]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
mov ebx, dword [edx]
xor ecx, ecx
inc edi
add edx, 4
mov cl, byte [ebx + eax]
dec dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov byte [edi - 1], cl
jne 0x41e245
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x30]
jl 0x41e1ff
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x7c], 0x100
mov dword [esp + 0x14], ecx
xor eax, eax
add edi, 2
mov ax, word [edi - 2]
mov dword [esp + 0x10], eax
xor eax, eax
mov al, byte [esi + 0x14]
mov edx, dword [esp + 0x10]
mov cl, byte [esi + 0x13]
mov ebx, dword [esp + 0x10]
shr edx, cl
and eax, edx
mov cl, 8
sub cl, byte [esi + 0x15]
xor edx, edx
shl eax, cl
mov cl, 8
mov dl, byte [esi + 0xe]
sub cl, byte [ebp + 0x15]
sar eax, cl
mov cl, byte [ebp + 0x13]
shl eax, cl
mov cl, byte [esi + 0xd]
shr ebx, cl
and edx, ebx
mov cl, 8
sub cl, byte [esi + 0xf]
mov ebx, dword [esp + 0x10]
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0xf]
sar edx, cl
mov cl, byte [ebp + 0xd]
shl edx, cl
or eax, edx
mov cl, byte [esi + 0x10]
shr ebx, cl
xor edx, edx
mov cl, 8
mov dl, byte [esi + 0x11]
sub cl, byte [esi + 0x12]
and edx, ebx
shl edx, cl
mov cl, 8
sub cl, byte [ebp + 0x12]
sar edx, cl
mov cl, byte [ebp + 0x10]
shl edx, cl
or eax, edx
mov cl, byte [ebp + 0x16]
xor edx, edx
shl edx, cl
or eax, edx
mov ecx, dword [esp + 0x14]
add dword [esp + 0x14], 4
mov dword [ecx], eax
dec dword [esp + 0x7c]
jne 0x41e27f
mov ecx, esi
mov eax, dword [esi]
call dword [eax + 0x14]
mov ecx, ebp
mov eax, dword [ebp]
call dword [eax + 0x14]
mov eax, 1
jmp 0x41e37f
push str.MarniBits::Blt
push 0x4ab1c0
call fcn.0043d370
add esp, 8
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
mov ecx, ebp
mov eax, dword [ebp]
call dword [eax + 0x14]
jmp 0x41e37d
mov eax, dword [ecx + 0xc]
mov ebx, dword [ecx + 8]
push eax
mov ecx, dword [ecx]
push ebx
push edx
push ecx
push 0x4ad948
call fcn.0043d360
add esp, 0x14
jmp 0x41e37d
push str.MarniBits::Blt
push 0x4ad818
call fcn.0043d370
add esp, 8
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x2f4c
ret 0x14