Function at 0x40c920
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x416814]
mov ecx, 0x36
cmp eax, ecx
jne 0x40c948
mov edx, dword [0x41681c]
mov eax, dword [0x4167d0]
sub ecx, edx
shl eax, cl
mov dword [0x4167d0], eax
push ebx
push esi
push edi
push 1
push 0
push 1
push 0
push 0xa
push 4
call fcn.0040a040
push 1
call fcn.0040a3f0
push 1
call fcn.0040b520
push 0xfffffffffffffff6
push 0x20
call fcn.0040ab50
push 0xfffff946
push 0xffffffffffffffc4
call fcn.0040a1c0
push 1
push 0x20
call fcn.0040a1c0
push 0xffffffffffffffa3
push 0x2f
push 0
push 0
push 0xffffffffffffffd0
push 0x39
call fcn.0040a040
push 1
push 0xffffffffffffffff
push 0
push 0
call fcn.0040b600
push 0
push 1
call fcn.0040a1c0
push 1
push 0
push 0
push 0
push 0xffffffffffffffc9
push 0xffffffffffffffcc
call fcn.0040a040
push 0
call fcn.0040b520
mov eax, dword [ebp + 0x14]
push 0x61
push 0xffffffffffffffee
push 0
push 0
push 0
mov dword [ebp - 8], eax
call fcn.00414160
push 0
push 0xffffffffffffffff
push 0
push 0xffffffffffffffff
push 0
call fcn.0040b730
push 0xfffffffffffffffe
push 0xffffffffffffffd9
push 0xffffffffffffffca
push 0xffffffffffffffff
push 0xffffffffffffffc8
push 0
mov ebx, 0xffffffc9
call fcn.0040a040
xor esi, esi
push esi
push esi
push esi
push esi
call fcn.0040b600
push 0xffffffffffffffff
push 0xffffffffffffffd6
call fcn.0040ab50
mov eax, dword [ebp + 0x10]
xor edi, edi
test eax, eax
mov ecx, dword [ebp + 8]
jle 0x40cc90
mov edx, dword [ebp + 0xc]
mov dword [ebp - 4], ecx
sub edx, ecx
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x10], edx
mov edx, esi
mov ecx, esi
shl edx, cl
mov ecx, edx
sar ebx, cl
dec edi
xor ecx, ecx
mov eax, edi
and eax, ebx
cmp ebx, 0xffffffd6
setne cl
mov edx, ebx
or eax, ecx
xor edx, 0xffffffd1
or esi, eax
sub edi, edx
xor eax, eax
cmp esi, edi
setge al
push eax
call fcn.0040a3f0
mov edx, 0x23
mov ecx, esi
sar edx, cl
or edi, 1
lea eax, [edi + edi]
mov ecx, edx
and ebx, eax
sar esi, cl
lea ecx, [ebx - 0x35]
xor edi, ecx
mov ecx, edi
imul ecx, esi
shl edi, cl
mov ecx, edi
shl edi, cl
sar edi, 1
cmp esi, 0x25
jle 0x40ca98
mov edx, ebx
mov ecx, esi
shl edx, cl
mov ecx, edx
sar esi, cl
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
mov dl, byte [eax + ecx]
mov eax, esi
or al, 0x20
mov byte [ebp + 0x17], dl
sub edi, eax
test ebx, ebx
je 0x40cab5
mov ecx, ebx
sar ecx, 0x2d
and esi, ecx
mov edx, ebx
imul edx, ebx
sub edi, edx
mov ecx, edi
or ecx, 0x30
shl esi, 0x3f
shl ebx, cl
mov eax, esi
mov ecx, edi
xor eax, 0x2b
or ecx, 0x23
sar edi, cl
and ebx, eax
mov ecx, ebx
sar ecx, 0x30
or esi, ecx
mov edx, edi
imul edx, esi
mov eax, edi
mov ecx, 0x3f
or al, 0x24
push edx
sub ecx, ebx
push eax
push ecx
push 0xffffffffffffffa2
call fcn.0040b600
xor ecx, ecx
cmp edi, 0x29
sete cl
shl esi, cl
cmp ebx, edi
jle 0x40cb0d
xor edx, edx
cmp edi, 0xffffffd9
setge dl
xor edi, edx
inc edi
xor eax, eax
cmp edi, 0x3b
push 8
setge al
push eax
call fcn.0040a1c0
mov edx, 0x3c
mov ecx, edi
sar edx, cl
mov eax, ebx
push 0
xor eax, 0x3c
push eax
add edi, edx
call fcn.0040ab50
mov ecx, edi
mov edx, dword [ebp - 4]
imul ecx, esi
sar edi, cl
mov cl, byte [ebp + 0x17]
mov byte [edx], cl
mov ecx, ebx
sar ecx, 0x3f
sar esi, cl
mov eax, edi
xor eax, esi
mov ecx, esi
add ebx, eax
sub ecx, ebx
je 0x40cb7c
xor eax, eax
lea edx, [esi + 0x23]
cmp edi, 0xffffffd2
mov ecx, edi
push edx
sete al
and ecx, 0x26
xor edx, edx
push eax
cmp esi, ebx
push 0xffffffffffffffa2
push ecx
setge dl
push 1
push edx
call fcn.0040a040
mov eax, 0x35
mov ecx, esi
sar eax, cl
lea ecx, [edi + edi*2]
shl ecx, 4
add ecx, edi
push eax
push 0
push ecx
call fcn.0040e970
mov edx, edi
xor ecx, ecx
or edx, ebx
and esi, edx
cmp ebx, 0xffffffcc
sete cl
sar edi, cl
cmp esi, 0x3d
jge 0x40cbb0
lea eax, [esi + ebx]
and ebx, eax
mov ecx, esi
mov edx, 0xffffffcd
sar ecx, 0x25
push ecx
mov ecx, ebx
sar edx, cl
xor eax, eax
cmp ebx, 0x35
mov ecx, esi
setne al
push edx
or ecx, 0x2c
push eax
push ecx
mov edx, 0x2d
mov ecx, ebx
shl edx, cl
push edx
call fcn.00414160
mov eax, esi
mov ecx, ebx
xor eax, 0xffffffc6
and ecx, 0x3f
sub edi, eax
push ecx
mov edx, edi
mov ecx, ebx
shl edx, cl
mov eax, edi
xor ecx, ecx
and eax, esi
cmp edi, ebx
setg cl
push edx
push eax
push ecx
mov edx, edi
mov ecx, esi
shl edx, cl
push edx
call fcn.00414160
mov ecx, esi
xor eax, eax
xor ecx, ebx
sar ebx, cl
mov ecx, edi
cmp ebx, 0xffffffc6
sete al
sar esi, 1
sub esi, eax
or ecx, ebx
je 0x40cc4c
xor edx, edx
cmp esi, 0x26
setl dl
xor eax, eax
cmp ebx, 0x22
setne al
xor ecx, ecx
cmp edi, 0xffffffdb
push edx
push eax
setl cl
push 1
push ecx
mov edx, esi
mov ecx, ebx
sar edx, cl
push edx
call fcn.0040d6b0
lea eax, [ebx + ebx*2]
add edi, 3
xor edx, edx
lea ecx, [esi - 0x23]
lea eax, [eax + eax*8]
shl eax, 1
push eax
cmp ebx, 0x33
mov eax, edi
push ecx
setne dl
push 1
xor eax, 0xffffffd7
push edx
push eax
call fcn.0040d6b0
mov eax, dword [ebp + 0xc]
xor ecx, ecx
cmp ebx, 0x2b
setge cl
or edi, ecx
mov ecx, dword [ebp - 4]
inc ecx
dec eax
mov dword [ebp - 4], ecx
mov dword [ebp + 0xc], eax
jne 0x40ca33
xor edx, edx
cmp ebx, 0x3b
setge dl
xor ecx, ecx
push 0
lea eax, [esi + ebx]
cmp esi, 0xffffffd0
push edx
push eax
setl cl
push 0
push ecx
call fcn.0040d6b0
xor edx, edx
cmp ebx, esi
setge dl
sub esi, edx
mov ecx, ebx
mov eax, esi
xor edx, edx
sar eax, cl
cmp ebx, edi
lea ecx, [edi + ebx]
sete dl
push eax
push 1
push ecx
lea eax, [edi - 0x2d]
push edx
push eax
call fcn.0040d6b0
xor ecx, ecx
cmp ebx, esi
setl cl
sub ebx, ecx
mov ecx, edi
imul ecx, edi
shl ebx, cl
mov eax, edi
xor ecx, ecx
or al, 0x34
push eax
mov edx, ebx
imul edx, ebx
and ebx, edx
cmp esi, 0x2e
setl cl
push ecx
call fcn.0040ab50
xor edx, edx
cmp edi, 0xffffffce
setne dl
and esi, edx
mov eax, ebx
mov ecx, esi
mov edx, esi
shl eax, 0x39
xor ecx, 0x33
push eax
push ecx
and edx, ebx
push 1
push edx
call fcn.0040b600
mov eax, esi
mov ecx, esi
sar eax, cl
add edi, esi
xor ecx, ecx
cmp ebx, 0xffffffd0
push 0
setge cl
xor edx, edx
cmp edi, 0x3f
push eax
push 0xffffffffffffffff
setl dl
push ecx
push edx
call fcn.00414160
mov eax, ebx
mov ecx, edi
shl eax, cl
mov ecx, 0xffffffd5
or ebx, eax
sub ecx, edi
je 0x40cd5d
mov edx, edi
or edx, esi
or ebx, edx
mov ecx, 0x36
lea eax, [edi - 0x2d]
sub ecx, ebx
or edi, eax
or esi, ecx
xor edx, edx
cmp ebx, edi
mov ecx, edi
setne dl
add ebx, edx
push 5
mov eax, ebx
shl eax, cl
push eax
call fcn.0040ab50
mov eax, dword [ebp + 0x10]
mov ecx, esi
and ecx, 0xffffffd9
shl esi, cl
test eax, eax
je 0x40d623
mov ecx, dword [ebp + 8]
mov edx, eax
lea eax, [ecx + edx - 1]
mov dword [ebp - 0xc], eax
mov eax, 1
sub eax, ecx
mov dword [ebp - 0x14], eax
cmp edi, esi
jge 0x40cdb5
mov ecx, esi
and ecx, 0x38
add ebx, ecx
cmp ebx, esi
jne 0x40cdbd
lea esi, [esi + esi - 0x29]
mov edx, edi
mov ecx, edi
sar edx, cl
mov eax, ebx
mov ecx, edx
sar esi, cl
xor eax, 0xffffffdb
je 0x40cdd8
xor ecx, ecx
cmp esi, 0x3d
setge cl
sub ebx, ecx
xor edx, edx
cmp ebx, 0xffffffd6
mov eax, ebx
lea ecx, [edi + 0x3d]
sete dl
shl eax, 0x3d
push edx
push eax
mov eax, esi
mov edx, esi
neg eax
shl eax, 4
sub eax, esi
xor edx, 0xffffffd2
push ecx
push edx
lea eax, [eax + eax*2]
push eax
call fcn.0040d6b0
xor ecx, ecx
cmp edi, 0x36
setge cl
sar edi, cl
xor ecx, ecx
cmp ebx, esi
sete cl
mov edx, ebx
or edi, ecx
mov ecx, esi
shl edx, cl
xor ecx, ecx
add edi, edx
cmp ebx, esi
setne cl
sar ebx, cl
mov ecx, edi
xor eax, eax
or ecx, ebx
sar esi, cl
lea ecx, [edi + 0x3c]
cmp edi, esi
setge al
and eax, esi
sar eax, cl
xor ecx, ecx
cmp ebx, edi
setge cl
sar edi, cl
mov esi, eax
mov ecx, edi
xor ecx, esi
je 0x40ce50
mov esi, edi
neg esi
mov edx, 0x3b
mov ecx, edi
sar edx, cl
test edx, edx
je 0x40ce79
mov eax, edi
mov edx, edi
xor eax, 0xffffffd8
mov ecx, esi
push eax
mov eax, 0xffffffc8
sar edx, cl
mov ecx, edi
sar eax, cl
push edx
push eax
call fcn.0040b930
xor ecx, ecx
cmp ebx, esi
setge cl
xor ebx, ecx
mov ecx, ebx
sub ecx, edi
sar ebx, cl
cmp edi, ebx
jge 0x40ce8f
xor ebx, 0x3f
mov edx, ebx
mov eax, ebx
shl edx, 4
add edx, ebx
mov ecx, edi
shl edx, 1
shl eax, 0x2d
and esi, edx
xor ebx, eax
mov eax, dword [ebp - 8]
xor edx, edx
div dword [ebp + 0x10]
mov dword [ebp - 0x10], edx
mov edx, 0xffffffd9
sar edx, cl
test edx, edx
je 0x40ced5
mov eax, edi
mov ecx, esi
shl eax, cl
xor ecx, ecx
cmp esi, 0x3f
push 0
push esi
setl cl
push eax
lea edx, [esi - 0x28]
push ecx
push edx
call fcn.00414160
shl ebx, 0x20
mov eax, ebx
xor ecx, ecx
sub eax, edi
lea edx, [ebx + ebx*8]
push eax
cmp esi, edi
lea eax, [ebx + edx*2]
setge cl
shl eax, 1
push ecx
push eax
call fcn.0040e970
xor ecx, ecx
cmp esi, ebx
setg cl
and edi, ecx
xor edx, edx
cmp esi, edi
mov eax, edi
mov ecx, esi
sete dl
shl eax, cl
or ebx, edx
test eax, eax
je 0x40cf1a
mov edx, 0xffffffdb
sar edx, cl
mov ecx, edx
shl esi, cl
xor eax, eax
cmp esi, 0x31
sete al
and esi, eax
mov ecx, esi
sub ecx, ebx
je 0x40cf2c
sub ebx, edi
mov edx, edi
xor edx, ebx
push edx
call fcn.0040a3f0
xor eax, eax
cmp edi, 0x2e
setl al
mov ecx, edi
or eax, esi
sar ecx, 0x29
add eax, ecx
xor ecx, ecx
mov esi, eax
mov edx, esi
mov dword [ebp - 4], esi
sub edx, edi
or ebx, edx
cmp ebx, esi
setl cl
sar edi, cl
xor eax, eax
cmp edi, esi
setne al
push eax
call fcn.0040b520
sub edi, 0x66
and ebx, 0xffffffc8
mov ecx, edi
xor edx, edx
xor ecx, esi
cmp ebx, esi
push ecx
mov eax, ebx
setge dl
mov ecx, ebx
push edx
shl eax, 0xdc
sar ecx, 0x2c
push eax
push ecx
call fcn.0040b600
push 1
lea edx, [edi - 0x31]
push 0
push edx
push 1
call fcn.0040b600
mov ecx, edi
xor eax, eax
or ecx, esi
shl ebx, cl
cmp edi, 0x27
setne al
xor ecx, ecx
and ebx, eax
mov eax, dword [ebp - 4]
cmp edi, 0xffffffd2
mov esi, ebx
setge cl
xor edi, ecx
mov ebx, dword [ebp - 4]
xor edx, edx
cmp edi, eax
sete dl
add eax, eax
or esi, edx
test eax, eax
je 0x40cfe7
mov edx, edi
lea ecx, [edi + ebx]
imul edx, ebx
push ecx
push edx
mov edx, esi
mov ecx, ebx
mov eax, edi
shl edx, cl
and eax, ebx
push eax
push edx
call fcn.0040b600
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov dl, byte [ecx + eax]
mov eax, edi
and al, 0xcb
xor ecx, ecx
add ebx, eax
mov byte [ebp + 0xf], dl
cmp ebx, 0x32
setl cl
push ecx
call fcn.0040a3f0
mov eax, edi
mov edx, edi
imul eax, esi
mov ecx, edi
xor esi, eax
sar edx, cl
or ebx, edx
cmp esi, 0xffffffc3
mov dword [ebp - 4], ebx
jge 0x40d03d
lea ecx, [ebx + ebx]
mov edx, 0x2a
mov eax, edi
push ecx
sub edx, ebx
xor eax, esi
xor ecx, ecx
cmp edi, 0x3c
push edx
push eax
setle cl
push ecx
call fcn.0040b600
mov edx, edi
xor edx, 0x23
je 0x40d048
dec ebx
mov dword [ebp - 4], ebx
lea eax, [edi + esi]
push eax
call fcn.0040b520
xor ecx, ecx
cmp esi, 0x2e
setl cl
or edi, ecx
mov ebx, esi
mov ecx, edi
mov edx, esi
sar ebx, cl
xor ecx, ecx
add ebx, edi
mov edi, dword [ebp - 4]
cmp edi, 0xffffffdf
setge cl
shl ebx, cl
xor edx, 0x2f
je 0x40d07f
mov eax, edi
mov ecx, ebx
sar eax, cl
and esi, eax
xor ecx, ecx
cmp ebx, 0xffffffc4
setl cl
xor eax, eax
cmp esi, ebx
push ecx
lea edx, [esi - 0x35]
setl al
xor ecx, ecx
push edx
cmp ebx, 0x2b
mov edx, esi
setl cl
push eax
push ecx
shl edx, 0xc9
push edx
call fcn.0040eaf0
mov eax, dword [ebp - 4]
xor ecx, ecx
cmp eax, esi
mov edx, ebx
sete cl
or ecx, eax
xor edx, esi
sub ecx, edx
inc ebx
mov edi, ecx
mov ecx, dword [ebp - 0xc]
xor eax, eax
cmp edi, 0xffffffd2
mov dl, byte [ecx]
setne al
and esi, eax
xor eax, eax
cmp ebx, 0xffffffc6
mov byte [ebp + 0x17], dl
sete al
and ebx, eax
xor ecx, ecx
cmp edi, 0x23
mov eax, esi
setle cl
xor edx, edx
push ecx
cmp edi, 0x39
mov ecx, edi
setge dl
sar eax, cl
push edx
push 0xffffffffffffffa9
push 0
or ecx, 0x36
push eax
push ecx
call fcn.0040a040
xor edx, edx
cmp ebx, 0x28
setl dl
and edi, edx
mov edx, 0x2d
mov ecx, ebx
lea eax, [ebx + 0x2a]
shl edx, cl
push eax
push 0
push edx
push 0xffffffffffffffef
push 1
call fcn.0040d6b0
mov ecx, edi
xor eax, eax
shl ecx, 0x3a
shl ebx, cl
cmp esi, ebx
setg al
xor ecx, ecx
cmp ebx, esi
sete cl
push eax
push ecx
xor edx, edx
cmp esi, 0xffffffdd
push 0
push 1
sete dl
push edx
call fcn.0040eaf0
lea eax, [edi - 0x3f]
mov ecx, 0xffffffd0
or eax, edi
sub ecx, ebx
xor eax, ecx
mov edx, esi
mov dword [ebp - 4], eax
lea eax, [esi + esi*4]
shl edx, 0x33
push edx
mov edi, ebx
push 0
mov ecx, esi
push 0
lea eax, [eax + eax*8]
push 0
sub ecx, edi
push eax
push ecx
call fcn.0040a040
mov eax, dword [ebp - 4]
mov edx, edi
dec eax
xor edx, eax
mov dword [ebp - 4], eax
or edi, edx
test eax, edi
je 0x40d190
sub eax, esi
and esi, eax
mov ebx, dword [ebp - 4]
xor ecx, ecx
cmp ebx, 0x3f
push 0
setle cl
push ecx
push 0
call fcn.0040b930
xor ecx, ecx
cmp edi, 0x22
sete cl
lea eax, [edi + edi*4]
xor edx, edx
sar esi, cl
cmp edi, 0x35
lea eax, [edi + eax*2]
setg dl
lea ecx, [eax + eax*4]
xor ebx, ebx
sar ebx, cl
add esi, edx
mov ecx, esi
mov edx, ebx
sar edx, cl
test edx, edx
je 0x40d1d9
xor ecx, ecx
cmp ebx, esi
setg cl
shl edi, cl
mov eax, ebx
lea esi, [esi + esi - 0x25]
or eax, 0xffffffd9
je 0x40d1e6
xor edi, ebx
mov edx, edi
mov ecx, edi
shl edx, cl
sub edi, edx
cmp ebx, 0x3c
jg 0x40d1f5
sar edi, 1
cmp ebx, edi
jle 0x40d1fe
lea ecx, [esi - 0x20]
sar ebx, cl
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
mov al, byte [ebp + 0x17]
cmp ebx, 0x25
mov byte [edx + ecx], al
jle 0x40d218
xor eax, eax
cmp ebx, esi
setl al
sub edi, eax
xor ecx, ecx
cmp esi, edi
setg cl
add edi, ecx
xor edx, edx
cmp ebx, 0xffffffc1
setg dl
add ebx, edx
test ebx, 0xffffffd1
je 0x40d239
mov eax, edi
or eax, ebx
sub ebx, eax
xor ecx, ecx
cmp esi, edi
setne cl
push ecx
call fcn.0040e7d0
mov edx, ebx
or edx, 0x30
or esi, edx
mov eax, esi
mov ecx, esi
shl eax, cl
push eax
call fcn.0040b520
xor esi, edi
test bl, 0x36
je 0x40d267
mov ecx, ebx
or ecx, 0x25
add esi, ecx
lea edx, [esi + 0x23]
test edx, edx
je 0x40d289
mov eax, edi
xor ecx, ecx
xor eax, ebx
cmp esi, 0xffffffd8
mov edx, 0x2b
push eax
sete cl
sub edx, edi
push ecx
push edx
call fcn.0040e970
mov eax, ebx
lea ecx, [edi + 0x2f]
and eax, 0x33
sar esi, cl
sub edi, eax
cmp ebx, 0x3c
je 0x40d2c0
mov ecx, edi
xor edx, edx
imul ecx, esi
cmp esi, ebx
push 1
setl dl
xor eax, eax
cmp esi, 0x31
push ecx
push edx
setg al
xor ecx, ecx
cmp edi, esi
setl cl
push eax
push ecx
call fcn.0040d6b0
mov edx, esi
xor eax, eax
xor edx, 0x38
and edi, edx
mov edx, 0xffffffc8
cmp edi, 0x22
setne al
or esi, 0x24
and esi, eax
mov ecx, esi
shl edx, cl
test edx, edx
je 0x40d2f4
xor eax, eax
cmp esi, 0x32
mov edx, edi
setne al
shl edx, cl
push eax
push edx
call fcn.0040ab50
lea eax, [esi*8]
mov edx, dword [ebp - 0xc]
sub eax, esi
lea ecx, [edi + edi]
shl ebx, cl
mov cl, byte [ebp + 0xf]
lea esi, [esi + eax*4]
mov eax, edi
mov byte [edx], cl
shl eax, 5
add eax, edi
xor ecx, ecx
shl esi, 1
and edi, eax
cmp esi, ebx
setl cl
push ecx
call fcn.0040e7d0
mov ecx, ebx
mov edx, ebx
sar esi, cl
shl edx, 5
je 0x40d33a
xor eax, eax
cmp esi, 0x25
sete al
or esi, eax
mov ecx, 0x39
xor edx, edx
sub ecx, ebx
mov eax, edi
xor ebx, ecx
shl esi, 0x60
mov ecx, ebx
and ecx, esi
sar esi, cl
cmp ebx, edi
mov ecx, edi
sete dl
and edx, 1
and ebx, edx
sub eax, ebx
and esi, eax
or ecx, esi
je 0x40d381
mov eax, esi
lea edx, [edi + 0x3f]
shl eax, 5
add eax, esi
push edx
lea ecx, [ebx + 0x2c]
push eax
or esi, 0x2a
push ecx
lea edx, [edi + edi]
push esi
push edx
call fcn.00414160
mov eax, ebx
mov ecx, ebx
sar eax, cl
xor edx, edx
or edi, eax
mov eax, dword [ebp - 8]
mov ecx, eax
dec ebx
shr ecx, 0x19
shl eax, 7
or ecx, eax
cmp ebx, 0xffffffd7
sete dl
push edx
mov dword [ebp - 8], ecx
call fcn.0040a3f0
xor eax, eax
cmp ebx, 0xffffffd3
setl al
sub ebx, eax
mov esi, 0x25
mov ecx, ebx
shl esi, cl
lea ecx, [edi - 0x39]
sar edi, cl
and esi, 0xffffffdd
lea ecx, [esi + esi]
test ecx, ecx
je 0x40d3d4
xor ecx, ecx
cmp esi, 0x22
setl cl
sar ebx, cl
xor ecx, ecx
cmp ebx, esi
sete cl
sar edi, cl
xor eax, eax
mov edx, edi
mov ecx, edi
shl edx, cl
and ebx, edx
cmp edi, esi
mov ecx, ebx
setg al
or ecx, 0x31
push eax
push ecx
call fcn.0040ab50
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
mov ecx, ebx
sub eax, edx
or ecx, esi
mov dword [ebp - 8], eax
sar edi, cl
xor eax, eax
lea edx, [ebx + ebx*4]
cmp edi, 0xffffffc2
sete al
xor ecx, ecx
cmp edi, 0x32
sete cl
push eax
push 0
shl edx, 3
push ecx
sub edx, ebx
push ebx
push edx
call fcn.00414160
push 0
and edi, ebx
call fcn.0040e7d0
mov eax, esi
mov ecx, ebx
sar eax, cl
mov edx, edi
mov ecx, eax
mov eax, ebx
shl esi, cl
mov ecx, ebx
xor ecx, 0x20
shl eax, 0x30
sar esi, cl
mov ecx, 1
sub ecx, ebx
imul esi, ecx
xor edx, esi
xor ecx, ecx
cmp esi, edi
push edx
setne cl
push eax
push ecx
push 0
push ebx
call fcn.0040d6b0
mov edx, ebx
xor ecx, ecx
shl edx, 0x37
or edi, edx
cmp edi, 0x3d
setl cl
shl esi, cl
mov ecx, ebx
sar ecx, 0xc6
shl ebx, cl
sar esi, 1
test esi, ebx
je 0x40d491
mov eax, esi
mov ecx, ebx
shl eax, cl
xor esi, eax
mov edx, 0x36
mov ecx, esi
shl edx, cl
xor eax, eax
cmp esi, 0xffffffcf
setl al
push edx
push eax
call fcn.0040a1c0
mov eax, dword [ebp - 8]
xor ecx, ecx
sub eax, 0x4995d299
mov edx, edi
mov dword [ebp - 8], eax
mov eax, edi
or eax, ebx
or eax, esi
cmp ebx, 0x29
setge cl
and eax, ecx
lea ecx, [edi + 0x26]
shl ebx, 0x30
sar ebx, cl
add eax, edi
and edx, 0x36
mov dword [ebp + 0x14], eax
add edi, edx
or eax, 0x28
mov esi, ebx
je 0x40d4e8
xor eax, eax
cmp edi, esi
setl al
add esi, eax
lea ecx, [esi - 0x29]
push 0
push ecx
call fcn.0040ab50
mov ebx, dword [ebp + 0x14]
lea eax, [ebx*8]
sub eax, ebx
lea edx, [eax + eax*2]
lea eax, [edi + edx*2]
lea edi, [eax + ebx]
lea ecx, [edi + ebx]
or ebx, ecx
cmp edi, esi
jne 0x40d51b
xor edx, edx
cmp esi, 0x3e
setg dl
and edi, edx
mov eax, esi
mov ecx, ebx
sar eax, cl
xor ecx, ecx
cmp edi, esi
sete cl
xor edx, edx
cmp ebx, edi
push ecx
push eax
setge dl
push edx
mov dword [ebp + 0x14], eax
call fcn.0040e970
mov eax, dword [ebp + 0x14]
mov ecx, esi
add ebx, eax
xor ecx, 0xffffffc7
sar ebx, cl
mov ecx, edi
mov eax, esi
and ecx, esi
or al, 0x2f
push ecx
lea edx, [ebx - 0x39]
push edx
push edi
push eax
push 0
call fcn.00414160
xor ecx, ecx
cmp esi, 0x2b
sete cl
sar edi, cl
mov ecx, dword [ebp - 8]
mov edx, 0x35
sub ecx, 0x3039
mov dword [ebp - 8], ecx
mov ecx, ebx
sar edx, cl
test edx, edx
je 0x40d582
xor ebx, 1
mov ecx, edi
xor edi, 0xfffffffc
xor ecx, esi
mov eax, edi
sar ebx, cl
or eax, ebx
xor edi, eax
cmp edi, 0xffffffcd
jge 0x40d59b
lea ecx, [ebx - 0x39]
sar esi, cl
sar edi, 1
mov edx, edi
mov ecx, edi
mov eax, 0x25
shl edx, cl
shl eax, cl
push edx
push eax
call fcn.0040ab50
or edi, esi
push edi
push 0
push esi
call fcn.0040b930
mov ecx, esi
imul ecx, esi
inc ebx
sar ebx, cl
cmp ebx, 0xffffffc5
jl 0x40d5cb
xor ebx, ebx
xor ecx, ecx
cmp esi, ebx
setne cl
push ecx
push 1
push 1
call fcn.0040e970
shl ebx, 1
test bl, 0x27
mov edi, 0xffffffdd
je 0x40d5e8
xor edx, edx
cmp ebx, 0xffffffcd
setge dl
xor eax, eax
push edx
cmp ebx, 0xffffffdd
push 0
push 0
push 0xffffffffffffffff
setl al
push eax
call fcn.0040b730
mov edx, ebx
mov ecx, ebx
mov eax, dword [ebp - 0xc]
shl edx, cl
mov ecx, edx
shl ebx, cl
mov ecx, dword [ebp - 0x14]
dec eax
add ecx, eax
mov dword [ebp - 0xc], eax
test ecx, ecx
jne 0x40cdaa
cmp edi, esi
je 0x40d630
xor ecx, ecx
cmp edi, ebx
setne cl
sar edi, cl
mov edx, edi
or edx, ebx
je 0x40d63f
xor ecx, ecx
cmp ebx, esi
setl cl
sar edi, cl
cmp edi, 0xffffffe0
jge 0x40d64b
mov ecx, esi
sar ecx, 0xd8
shl edi, cl
cmp esi, ebx
jl 0x40d651
or ebx, esi
mov eax, edi
shl eax, 0x39
push eax
call fcn.0040e7d0
mov edx, esi
mov ecx, esi
sar edx, cl
sar edi, 0xe5
xor eax, eax
cmp edi, 0x37
setne al
push edx
push 0
push eax
push 1
call fcn.0040b600
mov ecx, edi
mov edx, edi
or ecx, esi
shl esi, cl
mov ecx, esi
and edx, esi
shl ecx, 0x36
push ecx
mov eax, esi
mov ecx, edi
push edx
xor eax, ebx
xor edx, edx
sar ecx, 0x39
cmp esi, edi
push eax
setne dl
imul edi, ebx
push ecx
push edx
push edi
call fcn.0040a040
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret