Function at 0x403200
Capabilities:
Parse credit card information

Disassembly:
push ebp
sub ecx, ecx
mov ebp, esp
push edi
sub edx, edx
push esi
push ebx
sub esp, 0x5cc
sub ebx, ebx
movzx eax, byte [ebp + 8]
mov dword [ebp - 0x50c], ebx
mov edi, dword [ebp + 0x14]
mov dword [ebp - 0x514], ecx
mov dword [ebp - 0x508], edx
mov esi, dword [edi + 8]
mov byte [ebp - 0x4fd], al
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x504], esi
or eax, eax
je 0x4034bd
mov edx, 0x40d4e8
mov dword [ebp - 0x508], edx
cmp dword [ebp - 0x504], 0xc
jle 0x403450
sub dword [ebp - 0x504], 0xc
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x510], esi
movzx eax, byte [esi]
test al, al
je 0x403301
movzx edx, byte [ebp - 0x4fd]
sub edi, edi
mov byte [ebp - 0x545], 0
push 0xffffffffffffffff
pop ecx
nop
nop
movsx eax, al
mov dword [ebp - 0x518], edi
sub edi, edi
mov dword [ebp - 0x544], ecx
sub ecx, ecx
cmp eax, 0x3f
mov byte [ebp - 0x546], dl
jg 0x403312
cmp eax, 0x26
jl 0x403470
mov eax, dword [ebp - 0x50c]
not eax
cmp eax, 1
jbe 0x4034b0
mov ebx, dword [ebp + 0xc]
or ebx, ebx
je 0x4032e4
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov edx, dword [ebp - 0x510]
movsx esi, byte [edx]
mov dword [esp], esi
call fcn.0040a8c8
inc dword [ebp - 0x50c]
inc dword [ebp - 0x510]
mov edi, dword [ebp - 0x510]
movzx eax, byte [edi]
test al, al
jne 0x403278
mov eax, dword [ebp - 0x50c]
add esp, 0x5cc
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x41
jge 0x403486
mov edi, dword [ebp - 0x514]
sub esi, esi
mov eax, dword [0x410038]
or edi, edi
mov dword [ebp - 0x554], eax
je 0x40353f
mov edi, dword [ebp - 0x514]
mov ecx, dword [ebp - 0x510]
sbb edi, ecx
lea esi, [esi]
lea edi, [edi]
push edi
pop eax
sbb eax, esi
mov dword [esp + 4], eax
mov ebx, dword [ebp - 0x510]
add ebx, esi
mov dword [esp], ebx
call fcn.0040a960
or eax, eax
je 0x40338a
cmp eax, 0xfffffffe
je 0x40355c
cmp eax, 0xffffffff
je 0x403592
mov edx, dword [ebp - 0x554]
add esi, eax
or edx, edx
jne 0x403350
push esi
pop edx
not edx
or edx, edx
push edx
pop eax
js 0x403538
mov edi, dword [ebp - 0x50c]
add eax, esi
mov dword [ebp - 0x558], eax
not edi
cmp dword [ebp - 0x558], edi
jae 0x4034b0
mov ebx, dword [ebp + 0xc]
or ebx, ebx
je 0x40342a
or edx, edx
jle 0x4033e6
cmp edx, 0
jbe 0x4033e6
push edx
pop ebx
lea esi, [esi]
lea edi, [edi]
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x4033d0
cmp byte [ebp - 0x4fd], 0
je 0x40356b
mov edi, dword [ebp - 0x510]
lea ebx, [esi - 1]
jmp 0x403425
movzx edx, byte [edi]
mov eax, dword [0x411158]
push edx
pop ecx
test byte [eax + edx + 1], 2
je 0x403414
lea ecx, [edx - 0x20]
mov edx, dword [ebp + 0xc]
inc edi
mov dword [esp], ecx
dec ebx
mov dword [esp + 4], edx
call fcn.0040a8c8
cmp ebx, 0xffffffff
jne 0x403400
mov edx, dword [ebp - 0x558]
mov eax, dword [ebp - 0x510]
add dword [ebp - 0x50c], edx
lea esi, [eax + esi - 1]
mov dword [ebp - 0x510], esi
jmp 0x4032ea
mov ecx, dword [ebp - 0x504]
or ecx, ecx
jne 0x403264
push 0xc
pop ebx
nop
nop
mov dword [ebp - 0x504], ebx
jmp 0x403264
cmp eax, 0x23
jg 0x4034c7
cmp eax, 0x20
jge 0x4032b4
sub eax, 8
cmp eax, 5
jmp 0x403495
cmp eax, 0x5f
jle 0x4032b4
sub eax, 0x61
cmp eax, 0x1d
ja 0x40331b
mov eax, dword [ebp - 0x50c]
not eax
cmp eax, 1
ja 0x4032c5
lea esi, [esi]
add esp, 0x5cc
sub eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.0040a968
jmp 0x403250
cmp eax, 0x25
jne 0x40331b
inc dword [ebp - 0x510]
mov esi, dword [ebp - 0x510]
movzx ebx, byte [esi]
movsx eax, bl
cmp eax, 0x30
mov byte [ebp - 0x599], bl
je 0x403502
jg 0x40352e
nop
cmp eax, 0x23
je 0x403598
cmp eax, 0x2d
jne 0x4035ab
inc dword [ebp - 0x510]
movsx eax, byte [ebp - 0x599]
mov esi, dword [ebp - 0x510]
mov dword [ebp - 0x518], eax
movzx ebx, byte [esi]
movsx eax, bl
cmp eax, 0x30
mov byte [ebp - 0x599], bl
je 0x403502
jle 0x4034f0
cmp eax, 0x5e
je 0x40359f
cmp eax, 0x5f
jmp 0x4034fc
sub eax, eax
jmp 0x403398
mov ebx, dword [ebp - 0x510]
mov dword [esp], ebx
call fcn.0040a928
lea edx, [eax + ebx + 1]
mov dword [ebp - 0x514], edx
jmp 0x403336
mov dword [esp], ebx
call fcn.0040a928
add esi, eax
jmp 0x40338a
mov ecx, dword [ebp + 0xc]
pushfd
xor ebx, ebx
inc ebx
popfd
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp + 0xc], ecx
mov edi, dword [ebp - 0x510]
mov dword [esp], edi
call fcn.0040a958
jmp 0x40342a
inc esi
jmp 0x40338a
mov cl, 1
jmp 0x4034d0
mov byte [ebp - 0x546], 1
jmp 0x4034d0
movsx edx, byte [ebp - 0x599]
sub edx, 0x30
cmp edx, 9
ja 0x40361d
sub ebx, ebx
mov dword [ebp - 0x544], ebx
jmp 0x403604
je 0x404650
movsx ebx, byte [ebp - 0x599]
mov eax, dword [ebp - 0x544]
lea esi, [eax + eax*4]
lea edx, [ebx + esi*2 - 0x30]
mov dword [ebp - 0x544], edx
inc dword [ebp - 0x510]
mov esi, dword [ebp - 0x510]
movzx ebx, byte [esi]
movsx edx, bl
sub edx, 0x30
mov byte [ebp - 0x599], bl
cmp edx, 9
ja 0x40361d
cmp dword [ebp - 0x544], 0xccccccc
jle 0x4035c4
mov eax, 0x7fffffff
mov dword [ebp - 0x544], eax
jmp 0x4035e4
movsx eax, byte [ebp - 0x599]
cmp eax, 0x45
je 0x404668
sub edx, edx
cmp eax, 0x4f
mov dword [ebp - 0x51c], edx
je 0x404668
movsx ebx, byte [ebp - 0x599]
cmp ebx, 0x7a
mov dword [ebp - 0x550], ebx
ja case.0x403654.0
jmp dword [ebx*4 + 0x40d510]
cmp dword [ebp - 0x51c], 0x4f
je case.0x403654.0
mov byte [ebp - 0x38], 0x20
mov esi, dword [ebp - 0x51c]
lea edx, [ebp - 0x38]
mov byte [ebp - 0x37], 0x25
lea eax, [ebp - 0x36]
or esi, esi
je 0x40368d
movzx ecx, byte [ebp - 0x51c]
lea eax, [ebp - 0x35]
mov byte [ebp - 0x36], cl
movzx ecx, byte [ebp - 0x550]
mov byte [eax + 1], 0
lea ebx, [ebp - 0x438]
mov byte [eax], cl
mov esi, dword [ebp + 0x14]
mov eax, 0x400
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp + 0xc], esi
mov dword [esp], ebx
call fcn.0040a950
or eax, eax
je 0x4032ea
mov ecx, dword [ebp - 0x544]
dec eax
mov dword [ebp - 0x55c], eax
sbb ecx, eax
or ecx, ecx
push ecx
pop eax
js 0x40498e
mov ebx, dword [ebp - 0x55c]
mov edx, dword [ebp - 0x50c]
add eax, ebx
mov dword [ebp - 0x560], eax
not edx
cmp dword [ebp - 0x560], edx
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x403785
or edi, edi
sete bl
sub edx, edx
or ecx, ecx
setg dl
test edx, ebx
je 0x403740
cmp dword [ebp - 0x518], 0x30
je 0x404c14
cmp ecx, 0
jbe 0x403740
push ecx
pop ebx
mov esi, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], esi
call fcn.0040a8c8
dec ebx
jne 0x40372a
cmp byte [ebp - 0x545], 0
je 0x40491d
mov ebx, dword [ebp - 0x55c]
lea esi, [ebp - 0x437]
jmp 0x40377f
movzx edx, byte [esi]
mov eax, dword [0x411158]
push edx
pop ecx
test byte [eax + edx + 1], 1
je 0x40376f
lea ecx, [edx + 0x20]
mov edx, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
cmp ebx, 0xffffffff
jne 0x40375b
mov eax, dword [ebp - 0x560]
add dword [ebp - 0x50c], eax
jmp 0x4032ea
mov edx, dword [ebp - 0x51c]
or edx, edx
jne case.0x403654.0
test cl, cl
je case.0x403654.87
mov byte [ebp - 0x546], 1
mov byte [ebp - 0x545], 0
jmp case.0x403654.87
mov ecx, dword [ebp - 0x510]
pushfd
xor edi, edi
inc edi
popfd
cmp byte [ecx], 0x25
je 0x4037e5
mov edx, dword [ebp - 0x510]
inc edi
sbb edx, edi
cmp byte [edx + 1], 0x25
jne 0x4037d6
mov edx, dword [ebp - 0x544]
sbb edx, edi
or edx, edx
push edx
pop eax
js 0x4046b2
mov ebx, dword [ebp - 0x50c]
add eax, edi
mov dword [ebp - 0x588], eax
not ebx
cmp dword [ebp - 0x588], ebx
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x403890
or edx, edx
jle 0x403848
cmp dword [ebp - 0x518], 0x30
je 0x4046b9
cmp edx, 0
jbe 0x403848
push edx
pop ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x403832
cmp byte [ebp - 0x546], 0
je 0x404688
mov edx, dword [ebp - 0x510]
lea ebx, [edi - 1]
sbb edx, edi
lea esi, [edx + 1]
jmp 0x40388b
movzx edx, byte [esi]
mov edi, dword [0x411158]
push edx
pop ecx
test byte [edi + edx + 1], 2
je 0x40387a
lea ecx, [edx - 0x20]
mov eax, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
dec ebx
mov dword [esp + 4], eax
call fcn.0040a8c8
cmp ebx, 0xffffffff
jne 0x403865
mov edx, dword [ebp - 0x588]
add dword [ebp - 0x50c], edx
jmp 0x4032ea
mov byte [ebp - 0x545], 1
push 0x70
pop esi
nop
nop
mov dword [ebp - 0x550], esi
test cl, cl
je case.0x403654.87
mov byte [ebp - 0x546], 0
mov byte [ebp - 0x545], 1
jmp case.0x403654.87
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov ebx, dword [ebp + 0x14]
push 2
nop
nop
pop edi
mov ecx, dword [ebx]
push ecx
pop ebx
shr ebx, 0x1f
mov byte [ebp - 0x538], bl
mov byte [ebp - 0x539], 0
sub esi, esi
cmp dword [ebp - 0x51c], 0x4f
je 0x4046df
cmp byte [ebp - 0x538], 0
lea eax, [ebp - 0x1a]
mov dword [ebp - 0x540], eax
je 0x40391a
neg ecx
mov ebx, 0xcccccccd
test esi, 1
je 0x403936
dec dword [ebp - 0x540]
mov edx, dword [ebp - 0x540]
mov byte [edx], 0x3a
dec dword [ebp - 0x540]
push ecx
pop eax
mul ebx
shr edx, 3
lea eax, [edx + edx*4]
shl eax, 1
sbb ecx, eax
mov al, cl
mov ecx, dword [ebp - 0x540]
add al, 0x30
or edx, edx
mov byte [ecx], al
push edx
pop ecx
setne dl
sar esi, 1
setne al
or eax, edx
test al, 1
jne 0x40391f
cmp edi, dword [ebp - 0x544]
jge 0x403976
mov edi, dword [ebp - 0x544]
cmp byte [ebp - 0x538], 0
mov byte [ebp - 0x59a], 0x2d
jne 0x40399a
cmp byte [ebp - 0x539], 1
sbb ebx, ebx
not bl
and bl, 0x2b
mov byte [ebp - 0x59a], bl
cmp dword [ebp - 0x518], 0x2d
je 0x4046f1
mov ecx, dword [ebp - 0x540]
lea eax, [ebp - 0x28]
sub edx, edx
mov dword [ebp - 0x590], eax
sbb ecx, eax
lea esi, [edi + ecx - 0xe]
cmp byte [ebp - 0x59a], 0
setne dl
sbb esi, edx
or esi, esi
jle 0x4047c2
cmp dword [ebp - 0x518], 0x5f
je 0x404844
mov edx, dword [ebp - 0x50c]
not edx
cmp edi, edx
jae 0x4034b0
cmp byte [ebp - 0x59a], 0
je 0x403a7f
mov ecx, dword [ebp - 0x544]
dec ecx
or ecx, ecx
push ecx
pop eax
js 0x4049c7
inc eax
cmp eax, edx
mov dword [ebp - 0x564], eax
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x403a73
or edi, edi
sete bl
sub edx, edx
or ecx, ecx
setg dl
test edx, ebx
je 0x403a5d
cmp dword [ebp - 0x518], 0x30
je 0x4049d5
cmp ecx, 0
jbe 0x403a5d
push ecx
pop ebx
mov eax, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], eax
call fcn.0040a8c8
dec ebx
jne 0x403a47
mov edx, dword [ebp + 0xc]
mov dword [esp + 4], edx
movsx ebx, byte [ebp - 0x59a]
mov dword [esp], ebx
call fcn.0040a8c8
mov ecx, dword [ebp - 0x564]
add dword [ebp - 0x50c], ecx
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x403aa3
cmp esi, 0
jbe 0x403aa3
push esi
pop ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x403a8d
add dword [ebp - 0x50c], esi
sub esi, esi
mov dword [ebp - 0x544], esi
mov ecx, dword [ebp - 0x540]
sub dword [ebp - 0x590], ecx
mov ecx, dword [ebp - 0x544]
mov esi, dword [ebp - 0x590]
add esi, 0xe
sbb ecx, esi
or ecx, ecx
mov dword [ebp - 0x568], esi
push ecx
pop eax
js 0x4047bb
mov ebx, dword [ebp - 0x568]
add eax, ebx
mov dword [ebp - 0x56c], eax
mov eax, dword [ebp - 0x50c]
not eax
cmp dword [ebp - 0x56c], eax
jae 0x4034b0
mov edx, dword [ebp + 0xc]
or edx, edx
je 0x403b86
or edi, edi
sete al
sub ebx, ebx
or ecx, ecx
setg bl
test ebx, eax
je 0x403b41
cmp dword [ebp - 0x518], 0x30
je 0x404968
cmp ecx, 0
jbe 0x403b41
push ecx
pop ebx
mov esi, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], esi
call fcn.0040a8c8
dec ebx
jne 0x403b2b
cmp byte [ebp - 0x546], 0
je 0x40478e
mov esi, dword [ebp - 0x540]
mov ebx, dword [ebp - 0x568]
jmp 0x403b80
movzx edx, byte [esi]
mov eax, dword [0x411158]
push edx
pop ecx
test byte [eax + edx + 1], 2
je 0x403b70
lea ecx, [edx - 0x20]
mov edx, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
cmp ebx, 0xffffffff
jne 0x403b5c
mov eax, dword [ebp - 0x56c]
add dword [ebp - 0x50c], eax
jmp 0x4032ea
mov esi, 0x40d4ec
mov edx, dword [ebp + 0x1c]
sub ecx, ecx
mov dword [esp + 0x14], edx
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x10], eax
mov ebx, dword [ebp + 0x14]
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
movzx edi, byte [ebp - 0x546]
mov dword [esp], edi
call fcn.00403200
mov edx, dword [ebp - 0x544]
sbb edx, eax
or edx, edx
push edx
pop ecx
js 0x4049ce
lea edi, [ecx + eax]
mov ecx, dword [ebp - 0x50c]
not ecx
cmp edi, ecx
jae 0x4034b0
mov ebx, dword [ebp + 0xc]
or ebx, ebx
je 0x403c53
or edx, edx
jle 0x403c24
cmp dword [ebp - 0x518], 0x30
je 0x404995
cmp edx, 0
jbe 0x403c24
push edx
pop ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x403c0e
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x14], edx
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x10], eax
mov ebx, dword [ebp + 0x14]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
movzx esi, byte [ebp - 0x546]
mov dword [esp], esi
call fcn.00403200
add dword [ebp - 0x50c], edi
jmp 0x4032ea
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
cmp dword [ebp - 0x544], 0xffffffff
mov ecx, dword [ebp + 0x1c]
je 0x404e19
mov ebx, dword [ebp - 0x544]
cmp ebx, 8
jg 0x403ca1
mov esi, 0x66666667
push ecx
pop eax
inc ebx
imul esi
push ecx
pop eax
sar eax, 0x1f
sar edx, 2
push edx
pop ecx
sbb ecx, eax
cmp ebx, 8
jle 0x403c8b
mov edi, dword [ebp - 0x544]
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov edx, dword [ebp + 0x14]
mov ecx, 0x92492493
push 2
nop
pop edi
nop
mov esi, dword [edx + 0x18]
mov ebx, dword [edx + 0x1c]
sbb ebx, esi
lea esi, [ebx + 7]
push esi
pop eax
imul ecx
push esi
pop eax
sar eax, 0x1f
lea ecx, [edx + esi]
sar ecx, 2
sbb ecx, eax
jmp 0x4038e5
mov esi, 0x40d4f2
jmp 0x403b9c
mov esi, 0x40d4fb
mov edx, dword [ebp - 0x51c]
or edx, edx
je 0x403b9c
jmp case.0x403654.0
cmp dword [ebp - 0x51c], 0x4f
je case.0x403654.0
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.87
mov esi, dword [ebp + 0x14]
mov edi, 0x51eb851f
mov ecx, dword [esi + 0x14]
push ecx
pop eax
push ecx
pop ebx
sar ebx, 0x1f
imul edi
push ecx
pop edi
sar edx, 5
sbb edx, ebx
lea esi, [edx + edx*4]
lea ebx, [edx + 0x13]
lea edx, [esi + esi*4]
shl edx, 2
sbb edi, edx
push edi
pop esi
shr esi, 0x1f
or ebx, ebx
setg al
push 2
nop
pop edi
nop
and esi, eax
cmp ecx, 0xfffff894
push ebx
pop ecx
setl byte [ebp - 0x538]
sbb ecx, esi
jmp 0x4038f0
mov edx, dword [ebp - 0x544]
dec edx
or edx, edx
push edx
pop eax
js 0x404f7d
mov ebx, dword [ebp - 0x50c]
lea esi, [eax + 1]
not ebx
cmp esi, ebx
jae 0x4034b0
mov ecx, dword [ebp + 0xc]
or ecx, ecx
je 0x403de4
or edx, edx
jle 0x403dd1
cmp dword [ebp - 0x518], 0x30
je 0x404dee
cmp edx, 0
jbe 0x403dd1
mov ebx, dword [ebp - 0x544]
dec ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x403dbb
mov eax, dword [ebp + 0xc]
mov dword [esp], 0xa
mov dword [esp + 4], eax
call fcn.0040a8c8
add dword [ebp - 0x50c], esi
jmp 0x4032ea
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov edx, dword [ebp + 0x14]
push 2
nop
pop edi
nop
mov eax, dword [edx + 0x10]
cmp eax, 0xffffffff
lea ecx, [eax + 1]
setl byte [ebp - 0x538]
jmp 0x4038f0
cmp dword [ebp - 0x51c], 0x45
nop
nop
push 2
pop edi
mov ecx, dword [ebp - 0x504]
je case.0x403654.0
cmp dword [ebp - 0x518], 0x30
setne al
sub edx, edx
cmp dword [ebp - 0x518], 0x2d
setne dl
test edx, eax
je 0x4038e5
push 0x5f
pop esi
nop
nop
mov dword [ebp - 0x518], esi
jmp 0x4038e5
mov eax, dword [ebp - 0x510]
pushfd
xor edi, edi
inc edi
popfd
mov dword [ebp - 0x54c], edi
cmp byte [eax + 1], 0x3a
jne 0x404b90
inc dword [ebp - 0x54c]
mov ebx, dword [ebp - 0x510]
mov edx, dword [ebp - 0x54c]
movzx eax, byte [ebx + edx]
cmp al, 0x3a
je 0x403e7a
cmp al, 0x7a
jne case.0x403654.0
mov ecx, dword [ebp - 0x54c]
add dword [ebp - 0x510], ecx
mov edi, dword [ebp + 0x14]
mov edx, dword [edi + 0x20]
or edx, edx
js 0x4032ea
mov esi, dword [ebp + 0x18]
sub ebx, ebx
or esi, esi
je 0x404a00
mov ecx, 0x91a2b3c5
push ebx
pop eax
push ebx
pop edi
imul ecx
mov eax, 0x88888889
sar edi, 0x1f
lea ecx, [edx + ebx]
sar ecx, 0xb
sbb ecx, edi
imul ebx
mov eax, 0x88888889
push edx
pop esi
add esi, ebx
sar esi, 5
sbb esi, edi
imul esi
push esi
pop edi
sar edi, 0x1f
add edx, esi
sar edx, 5
sbb edx, edi
push edx
pop eax
push esi
pop edi
shl eax, 4
shl edi, 4
sbb eax, edx
sbb edi, esi
shl eax, 2
push esi
pop edx
shl edi, 2
push ebx
pop esi
sbb edx, eax
sbb esi, edi
cmp dword [ebp - 0x54c], 1
mov dword [ebp - 0x5a0], edx
mov dword [ebp - 0x584], esi
je 0x404ff9
jb 0x404fd5
cmp dword [ebp - 0x54c], 2
je 0x404f20
cmp dword [ebp - 0x54c], 3
jne case.0x403654.0
mov esi, dword [ebp - 0x584]
or esi, esi
jne 0x404f20
mov edi, dword [ebp - 0x5a0]
or edi, edi
jne 0x404ff9
shr ebx, 0x1f
push 3
nop
pop edi
nop
sub esi, esi
mov byte [ebp - 0x538], bl
mov byte [ebp - 0x539], 1
jmp 0x4038f9
mov edi, dword [ebp - 0x51c]
or edi, edi
jne case.0x403654.0
mov edx, dword [ebp - 0x544]
dec edx
or edx, edx
push edx
pop eax
js 0x404c3a
mov ecx, dword [ebp - 0x50c]
lea esi, [eax + 1]
not ecx
cmp esi, ecx
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x403de4
or edx, edx
jle 0x403ff9
cmp dword [ebp - 0x518], 0x30
je 0x404e29
cmp edx, 0
jbe 0x403ff9
mov ebx, dword [ebp - 0x544]
dec ebx
mov edi, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], edi
call fcn.0040a8c8
dec ebx
jne 0x403fe3
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov ebx, dword [ebp - 0x510]
movsx ecx, byte [ebx]
mov dword [esp], ecx
call fcn.0040a8c8
jmp 0x403de4
sub eax, eax
mov dword [ebp - 0x54c], eax
jmp 0x403ea8
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.87
mov edi, dword [ebp + 0x14]
mov eax, 0x51eb851f
mov esi, dword [edi + 0x14]
imul esi
push esi
pop eax
push esi
pop edi
push edx
pop ecx
sar ecx, 5
cdq
sbb ecx, edx
lea ebx, [ecx + ecx*4]
lea eax, [ebx + ebx*4]
shl eax, 2
sbb edi, eax
push edi
pop eax
js 0x404d01
push 2
nop
nop
pop edi
push eax
pop ecx
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov edx, dword [ebp + 0x14]
pushfd
xor edi, edi
inc edi
popfd
mov ecx, dword [edx + 0x18]
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov esi, dword [ebp + 0x14]
push 2
nop
pop edi
nop
mov ecx, dword [esi + 8]
jmp 0x403e31
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov ecx, dword [ebp + 0x14]
nop
nop
push 3
pop edi
mov eax, dword [ecx + 0x1c]
jmp 0x403e07
test cl, cl
je 0x4040d1
mov byte [ebp - 0x546], 1
mov byte [ebp - 0x545], 0
mov esi, dword [ebp - 0x51c]
or esi, esi
je case.0x403654.87
jmp case.0x403654.0
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov edi, dword [ebp + 0x14]
mov edx, dword [edi + 0x14]
or edx, edx
mov dword [ebp - 0x594], edx
js 0x404cf4
mov esi, dword [ebp - 0x594]
add esi, 0xffffff9c
mov ecx, dword [ebp + 0x14]
sub ebx, ebx
mov edi, 0x92492493
mov dword [ebp - 0x570], ebx
mov ebx, dword [ecx + 0x1c]
mov edx, dword [ecx + 0x18]
push ebx
pop ecx
sbb ecx, edx
add ecx, 0x17e
mov dword [ebp - 0x598], edx
push ecx
pop eax
imul edi
push ecx
pop eax
sar eax, 0x1f
add edx, ecx
sar edx, 2
sbb edx, eax
lea edi, [edx*8]
push ebx
pop eax
sbb edi, edx
sbb ecx, edi
sbb eax, ecx
add eax, 3
mov dword [ebp - 0x574], eax
js 0x404e62
sub edi, edi
test esi, 3
mov dword [ebp - 0x57c], edi
jne 0x4041c7
mov edi, 0x51eb851f
push esi
pop eax
imul edi
push esi
pop edi
sar edi, 0x1f
mov dword [ebp - 0x5b4], edx
mov ecx, dword [ebp - 0x5b4]
mov dword [ebp - 0x5b8], eax
sar ecx, 5
sbb ecx, edi
lea edx, [ecx + ecx*4]
lea eax, [edx + edx*4]
shl eax, 2
cmp esi, eax
jne 0x4041bc
mov ecx, dword [ebp - 0x5b4]
sar ecx, 7
sbb ecx, edi
lea edx, [ecx + ecx*4]
lea eax, [edx + edx*4]
shl eax, 4
cmp esi, eax
jne 0x4041c7
pushfd
xor esi, esi
inc esi
popfd
mov dword [ebp - 0x57c], esi
mov edi, dword [ebp - 0x57c]
mov eax, 0x92492493
mov esi, dword [ebp - 0x598]
sbb ebx, edi
sub ebx, 0x16d
push ebx
pop edi
sbb edi, esi
add edi, 0x17e
imul edi
push edi
pop ecx
sar ecx, 0x1f
lea edx, [edi + edx]
sar edx, 2
sbb edx, ecx
lea eax, [edx*8]
sbb eax, edx
sbb edi, eax
sbb ebx, edi
push ebx
pop eax
add eax, 3
js 0x40421e
mov dword [ebp - 0x574], eax
pushfd
xor ebx, ebx
inc ebx
popfd
mov dword [ebp - 0x570], ebx
movsx eax, byte [ebp - 0x599]
cmp eax, 0x47
je 0x404cb5
cmp eax, 0x67
je 0x404c41
mov eax, dword [ebp - 0x574]
mov ecx, 0x92492493
nop
push 2
pop edi
nop
mov esi, dword [ebp - 0x574]
imul ecx
mov eax, dword [ebp - 0x574]
add edx, esi
sar edx, 2
sar eax, 0x1f
sbb edx, eax
lea ecx, [edx + 1]
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov ebx, dword [ebp + 0x14]
push 2
pop edi
nop
nop
mov ecx, dword [ebx + 0xc]
jmp 0x403e31
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov edx, dword [ebp + 0x14]
nop
push 2
nop
pop edi
mov ecx, dword [edx + 0xc]
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov eax, dword [ebp + 0x14]
nop
push 2
pop edi
nop
mov ecx, dword [eax + 4]
jmp 0x4038e5
cmp dword [ebp - 0x51c], 0x45
nop
push 2
pop edi
nop
mov ecx, dword [ebp - 0x504]
jne 0x4038e5
jmp case.0x403654.0
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov ebx, dword [ebp + 0x14]
push 2
nop
nop
pop edi
mov ecx, dword [ebx + 8]
jmp 0x4038e5
mov esi, 0x40d504
jmp 0x403cf6
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.0
mov ebx, dword [ebp + 0x14]
push 2
nop
pop edi
nop
mov ecx, dword [ebx + 0x18]
mov ebx, 0x92492493
add ecx, 6
push ecx
pop eax
imul ebx
push ecx
pop esi
sar esi, 0x1f
add edx, ecx
sar edx, 2
sbb edx, esi
mov esi, dword [ebp + 0x14]
lea eax, [edx*8]
sbb eax, edx
sbb ecx, eax
mov eax, dword [esi + 0x1c]
sbb eax, ecx
lea esi, [eax + 7]
push esi
pop eax
imul ebx
push esi
pop eax
sar eax, 0x1f
lea ecx, [edx + esi]
sar ecx, 2
sbb ecx, eax
jmp 0x4038e5
mov esi, dword [ebp + 0x14]
mov ebx, dword [esi]
mov dword [ebp - 0x468], ebx
mov edx, dword [esi + 4]
mov dword [ebp - 0x464], edx
mov eax, dword [esi + 8]
mov dword [ebp - 0x460], eax
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x45c], edi
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x458], ecx
mov ebx, dword [esi + 0x14]
lea ecx, [ebp - 0x468]
mov dword [ebp - 0x454], ebx
mov edx, dword [esi + 0x18]
lea ebx, [ebp - 0x1a]
mov dword [ebp - 0x450], edx
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x44c], eax
mov edi, dword [esi + 0x20]
mov dword [ebp - 0x448], edi
mov dword [esp], ecx
call fcn.00409ee0
mov dword [ebp - 0x540], ebx
push eax
pop edx
push eax
pop ecx
shr edx, 0x1f
mov ebx, 0x66666667
test dl, dl
mov byte [ebp - 0x538], dl
jne 0x40441c
dec dword [ebp - 0x540]
push ecx
pop eax
push ecx
pop edi
imul ebx
sar edi, 0x1f
sar edx, 2
sbb edx, edi
lea esi, [edx + edx*4]
mov edi, dword [ebp - 0x540]
shl esi, 1
sbb ecx, esi
push ecx
pop eax
add al, 0x30
or edx, edx
push edx
pop ecx
mov byte [edi], al
jne 0x4043de
mov byte [ebp - 0x539], 0
pushfd
xor edi, edi
inc edi
popfd
jmp 0x403968
dec dword [ebp - 0x540]
push ecx
pop eax
push ecx
pop esi
imul ebx
sar esi, 0x1f
sar edx, 2
sbb edx, esi
lea edi, [edx + edx*4]
mov esi, dword [ebp - 0x540]
shl edi, 1
sbb ecx, edi
push ecx
pop eax
push edx
pop ecx
mov dl, 0x30
sub dl, al
mov byte [esi], dl
or ecx, ecx
jne 0x40441c
jmp 0x40440b
mov edx, dword [ebp + 0x14]
mov eax, 0x92492493
pushfd
xor edi, edi
inc edi
popfd
mov ecx, dword [edx + 0x18]
add ecx, 6
imul ecx
push ecx
pop eax
sar eax, 0x1f
lea ebx, [ecx + edx]
sar ebx, 2
sbb ebx, eax
lea esi, [ebx*8]
sbb esi, ebx
sbb ecx, esi
inc ecx
jmp 0x4038e5
mov edx, dword [ebp - 0x544]
dec edx
or edx, edx
push edx
pop eax
js 0x404de7
mov ecx, dword [ebp - 0x50c]
lea esi, [eax + 1]
not ecx
cmp esi, ecx
jae 0x4034b0
mov ebx, dword [ebp + 0xc]
or ebx, ebx
je 0x403de4
or edx, edx
jle 0x4044e2
cmp dword [ebp - 0x518], 0x30
je 0x404f84
cmp edx, 0
jbe 0x4044e2
mov ebx, dword [ebp - 0x544]
dec ebx
mov edi, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], edi
call fcn.0040a8c8
dec ebx
jne 0x4044cc
mov eax, dword [ebp + 0xc]
mov dword [esp], 9
mov dword [esp + 4], eax
call fcn.0040a8c8
jmp 0x403de4
test cl, cl
je 0x40450c
mov byte [ebp - 0x546], 0
mov byte [ebp - 0x545], 1
mov esi, dword [ebp - 0x508]
or esi, esi
je 0x404521
mov ebx, dword [ebp - 0x508]
cmp byte [ebx], 0
jne 0x404544
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0x20]
or eax, eax
jl 0x404544
cmp eax, 1
mov edi, dword [0x41115c]
sbb eax, eax
not eax
and eax, 4
mov edx, dword [edi + eax]
mov dword [ebp - 0x508], edx
mov esi, dword [ebp - 0x508]
or esi, esi
je 0x405027
mov ecx, dword [ebp - 0x508]
mov dword [esp], ecx
call fcn.0040a928
mov edx, dword [ebp - 0x544]
push eax
pop edi
sbb edx, eax
or edx, edx
push edx
pop eax
js 0x405020
add eax, edi
mov dword [ebp - 0x580], eax
mov eax, dword [ebp - 0x50c]
not eax
cmp dword [ebp - 0x580], eax
jae 0x4034b0
mov esi, dword [ebp + 0xc]
or esi, esi
je 0x404608
or edx, edx
jle 0x4045c5
cmp dword [ebp - 0x518], 0x30
je 0x404faf
cmp edx, 0
jbe 0x4045c5
push edx
pop ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x4045af
cmp byte [ebp - 0x545], 0
je 0x404b9f
mov esi, dword [ebp - 0x508]
lea ebx, [edi - 1]
jmp 0x404603
movzx edx, byte [esi]
mov edi, dword [0x411158]
push edx
pop ecx
test byte [edi + edx + 1], 1
je 0x4045f2
lea ecx, [edx + 0x20]
mov eax, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
dec ebx
mov dword [esp + 4], eax
call fcn.0040a8c8
cmp ebx, 0xffffffff
jne 0x4045dd
mov eax, dword [ebp - 0x580]
jmp 0x40378b
cmp dword [ebp - 0x51c], 0x45
je case.0x403654.87
cmp dword [ebp - 0x51c], 0x4f
je case.0x403654.0
mov ecx, dword [ebp + 0x14]
nop
push 4
nop
pop edi
mov esi, dword [ecx + 0x14]
cmp esi, 0xfffff894
lea ecx, [esi + 0x76c]
setl byte [ebp - 0x538]
jmp 0x4038f0
movsx esi, byte [ebp - 0x599]
sub esi, 0x30
cmp esi, 7
jle 0x4035ca
jmp 0x403610
inc dword [ebp - 0x510]
mov dword [ebp - 0x51c], eax
mov ebx, dword [ebp - 0x510]
movzx eax, byte [ebx]
mov byte [ebp - 0x599], al
jmp 0x40363e
mov ecx, dword [ebp + 0xc]
pushfd
xor esi, esi
inc esi
popfd
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp + 0xc], ecx
mov ebx, dword [ebp - 0x510]
sbb ebx, edi
inc ebx
mov dword [esp], ebx
call fcn.0040a958
jmp 0x403890
sub eax, eax
jmp 0x4037f7
cmp edx, 0
jbe 0x403848
push edx
pop ebx
mov esi, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], esi
call fcn.0040a8c8
dec ebx
jne 0x4046c4
jmp 0x403848
cmp byte [ebp - 0x538], 0
jne 0x403906
jmp case.0x403654.87
cmp byte [ebp - 0x59a], 0
lea esi, [ebp - 0x28]
mov dword [ebp - 0x590], esi
je 0x403ab1
mov ecx, dword [ebp - 0x544]
dec ecx
or ecx, ecx
push ecx
pop eax
js 0x4049c0
mov edx, dword [ebp - 0x50c]
lea esi, [eax + 1]
not edx
cmp esi, edx
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x40477a
or edi, edi
sete bl
sub edx, edx
or ecx, ecx
setg dl
test edx, ebx
je 0x404764
cmp ecx, 0
jbe 0x404764
mov ebx, dword [ebp - 0x544]
dec ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x40474e
mov ebx, dword [ebp + 0xc]
mov dword [esp + 4], ebx
movsx eax, byte [ebp - 0x59a]
mov dword [esp], eax
call fcn.0040a8c8
add dword [ebp - 0x50c], esi
lea esi, [ebp - 0x28]
mov dword [ebp - 0x590], esi
jmp 0x403ab1
mov esi, dword [ebp + 0xc]
pushfd
xor edi, edi
inc edi
popfd
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
mov ebx, dword [ebp - 0x568]
mov dword [esp + 4], ebx
mov ecx, dword [ebp - 0x540]
mov dword [esp], ecx
call fcn.0040a958
jmp 0x403b86
sub eax, eax
jmp 0x403ade
cmp byte [ebp - 0x59a], 0
je 0x403ab1
mov ecx, dword [ebp - 0x544]
dec ecx
or ecx, ecx
push ecx
pop eax
js 0x404e5b
mov ebx, dword [ebp - 0x50c]
lea esi, [eax + 1]
not ebx
cmp esi, ebx
jae 0x4034b0
mov eax, dword [ebp + 0xc]
or eax, eax
je 0x404912
or edi, edi
sete bl
sub edx, edx
or ecx, ecx
setg dl
test edx, ebx
je 0x404838
cmp dword [ebp - 0x518], 0x30
je 0x404d14
cmp ecx, 0
jbe 0x404838
push ecx
pop ebx
mov eax, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], eax
call fcn.0040a8c8
dec ebx
jne 0x404822
mov ebx, dword [ebp + 0xc]
mov dword [esp + 4], ebx
jmp 0x404903
mov ebx, dword [ebp - 0x50c]
not ebx
cmp esi, ebx
jae 0x4034b0
mov edx, dword [ebp + 0xc]
or edx, edx
je 0x404878
cmp esi, 0
jbe 0x404878
push esi
pop ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x404862
add dword [ebp - 0x50c], esi
sub eax, eax
cmp dword [ebp - 0x544], esi
jle 0x404890
mov eax, dword [ebp - 0x544]
sbb eax, esi
cmp byte [ebp - 0x59a], 0
mov dword [ebp - 0x544], eax
je 0x403ab1
push eax
pop ecx
dec ecx
or ecx, ecx
push ecx
pop eax
js 0x404e54
lea esi, [eax + 1]
mov eax, dword [ebp - 0x50c]
not eax
cmp esi, eax
jae 0x4034b0
mov ebx, dword [ebp + 0xc]
or ebx, ebx
je 0x404912
or edi, edi
sete al
sub edx, edx
or ecx, ecx
setg dl
test edx, eax
je 0x4048fc
cmp ecx, 0
jbe 0x4048fc
mov ebx, dword [ebp - 0x544]
dec ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x20
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x4048e6
mov ebx, dword [ebp + 0xc]
mov dword [esp + 4], ebx
movsx edx, byte [ebp - 0x59a]
mov dword [esp], edx
call fcn.0040a8c8
add dword [ebp - 0x50c], esi
jmp 0x403ab1
cmp byte [ebp - 0x546], 0
je 0x404be7
mov ebx, dword [ebp - 0x55c]
lea esi, [ebp - 0x437]
jmp 0x40495d
movzx edx, byte [esi]
mov edi, dword [0x411158]
push edx
pop ecx
test byte [edi + edx + 1], 2
je 0x40494d
lea ecx, [edx - 0x20]
mov eax, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0040a8c8
dec ebx
cmp ebx, 0xffffffff
jne 0x404938
jmp 0x403785
cmp ecx, 0
jbe 0x403b41
push ecx
pop ebx
mov edi, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edi
call fcn.0040a8c8
dec ebx
jne 0x404973
jmp 0x403b41
sub eax, eax
jmp 0x4036dd
cmp edx, 0
jbe 0x403c24
push edx
pop ebx
mov eax, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], eax
call fcn.0040a8c8
dec ebx
jne 0x4049a0
jmp 0x403c24
sub eax, eax
jmp 0x404718
sub eax, eax
jmp 0x403a0d
sub ecx, ecx
jmp 0x403bdc
cmp ecx, 0
jbe 0x403a5d
push ecx
pop ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x4049e0
jmp 0x403a5d
mov ecx, dword [ebp + 0x14]
mov esi, dword [ecx]
mov dword [ebp - 0x4c8], esi
mov edi, dword [ecx + 4]
mov dword [ebp - 0x4c4], edi
mov eax, dword [ecx + 8]
mov dword [ebp - 0x4c0], eax
mov ebx, dword [ecx + 0xc]
mov dword [ebp - 0x4bc], ebx
mov esi, dword [ecx + 0x10]
mov dword [ebp - 0x4b8], esi
mov edi, dword [ecx + 0x14]
mov dword [ebp - 0x4b4], edi
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x4b0], eax
mov ebx, dword [ecx + 0x1c]
mov dword [ebp - 0x4a8], edx
lea edx, [ebp - 0x4c8]
mov dword [ebp - 0x4ac], ebx
lea ebx, [ebp - 0x4fc]
mov dword [esp], edx
call fcn.00409ee0
mov dword [ebp - 0x4fc], eax
inc eax
je 0x404d48
mov dword [esp], ebx
lea edx, [ebp - 0x498]
mov dword [esp + 4], edx
call fcn.004094d0
or eax, eax
je 0x4032ea
mov eax, dword [ebp - 0x4b4]
test al, 3
jne 0x404d3a
sar eax, 2
lea esi, [eax + 0x1da]
mov edx, dword [ebp - 0x484]
test dl, 3
mov dword [ebp - 0x58c], edx
jne 0x404dcb
push edx
pop ebx
sar ebx, 2
lea edi, [ebx + 0x1da]
mov ebx, 0x51eb851f
push esi
pop eax
imul ebx
push esi
pop eax
sar eax, 0x1f
push edx
pop ecx
sar ecx, 3
sbb ecx, eax
lea edx, [ecx + ecx*4]
lea eax, [edx + edx*4]
push esi
pop edx
sbb edx, eax
sbb esi, edi
push edx
pop eax
shr eax, 0x1f
sbb ecx, eax
push edi
pop eax
imul ebx
push edi
pop eax
sar eax, 0x1f
sar edx, 3
sbb edx, eax
lea ebx, [edx + edx*4]
lea eax, [ebx + ebx*4]
push edi
pop ebx
sbb ebx, eax
push ebx
pop eax
shr eax, 0x1f
push ecx
pop ebx
sbb edx, eax
sar ebx, 2
sbb ecx, edx
sbb esi, ecx
push edx
pop eax
mov ecx, dword [ebp - 0x58c]
mov edx, dword [ebp - 0x4b4]
sar eax, 2
sbb ebx, eax
lea ebx, [esi + ebx]
sbb edx, ecx
mov esi, dword [ebp - 0x47c]
lea eax, [edx + edx*8]
mov ecx, dword [ebp - 0x4ac]
lea edi, [edx + eax*8]
lea eax, [edi + edi*4]
mov edx, dword [ebp - 0x4c0]
add eax, ebx
mov ebx, dword [ebp - 0x490]
sbb ecx, esi
add eax, ecx
lea edi, [eax + eax*2]
mov esi, dword [ebp - 0x494]
sbb edx, ebx
lea ecx, [edx + edi*8]
mov eax, dword [ebp - 0x4c4]
push ecx
pop ebx
shl ebx, 4
mov edi, dword [ebp - 0x498]
sbb ebx, ecx
sbb eax, esi
lea edx, [eax + ebx*4]
mov esi, dword [ebp - 0x4c8]
push edx
pop ecx
shl ecx, 4
sbb ecx, edx
sbb esi, edi
lea ebx, [esi + ecx*4]
jmp 0x403ec3
mov esi, dword [ebp - 0x510]
movzx eax, byte [esi + 1]
jmp 0x403e94
cmp byte [ebp - 0x546], 0
je 0x404f56
mov esi, dword [ebp - 0x508]
lea ebx, [edi - 1]
jmp 0x404bdd
movzx edx, byte [esi]
mov edi, dword [0x411158]
push edx
pop ecx
test byte [edi + edx + 1], 2
je 0x404bcc
lea ecx, [edx - 0x20]
mov edx, dword [ebp + 0xc]
inc esi
mov dword [esp], ecx
dec ebx
mov dword [esp + 4], edx
call fcn.0040a8c8
cmp ebx, 0xffffffff
jne 0x404bb7
jmp 0x404608
mov edx, dword [ebp + 0xc]
pushfd
xor esi, esi
inc esi
popfd
lea ecx, [ebp - 0x437]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edx
mov ebx, dword [ebp - 0x55c]
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.0040a958
jmp 0x403785
cmp ecx, 0
jbe 0x403740
push ecx
pop ebx
mov edi, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edi
call fcn.0040a8c8
dec ebx
jne 0x404c1f
jmp 0x403740
sub eax, eax
jmp 0x403fa8
mov eax, dword [ebp - 0x594]
mov ebx, 0x51eb851f
mov edi, dword [ebp - 0x570]
imul ebx
mov eax, dword [ebp - 0x594]
push edx
pop ecx
sar ecx, 5
cdq
sbb ecx, edx
lea eax, [ecx + ecx*4]
mov ecx, dword [ebp - 0x594]
lea edx, [eax + eax*4]
shl edx, 2
sbb ecx, edx
add ecx, edi
push ecx
pop eax
imul ebx
push ecx
pop eax
push edx
pop edi
sar edi, 5
cdq
sbb edi, edx
lea edx, [edi + edi*4]
lea eax, [edx + edx*4]
shl eax, 2
nop
nop
push 2
pop edi
sbb ecx, eax
jns 0x4038e5
mov edx, dword [ebp - 0x570]
mov ebx, 0xfffff894
sbb ebx, edx
cmp dword [ebp - 0x594], ebx
jge 0x404cec
neg ecx
jmp 0x4038e5
mov ebx, dword [ebp - 0x570]
mov ecx, 0xfffff894
nop
push 4
nop
pop edi
mov esi, dword [ebp - 0x594]
mov eax, dword [ebp - 0x570]
sbb ecx, ebx
cmp dword [ebp - 0x594], ecx
lea ecx, [esi + eax + 0x76c]
setl byte [ebp - 0x538]
jmp 0x4038f0
sub ecx, 0xffffff9c
jmp 0x4038e5
push edx
pop esi
add esi, 0x12c
jmp 0x40410e
cmp esi, 0xfffff894
jge 0x404ddf
neg eax
jmp 0x40405c
cmp ecx, 0
jbe 0x404838
push ecx
pop ebx
mov ecx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], ecx
call fcn.0040a8c8
dec ebx
jne 0x404d1f
jmp 0x404838
sar eax, 2
lea esi, [eax + 0x1db]
jmp 0x404aa2
mov dword [esp], ebx
lea edx, [ebp - 0x4f8]
mov dword [esp + 4], edx
call fcn.00409530
or eax, eax
je 0x4032ea
mov edi, dword [ebp - 0x4c8]
mov ecx, dword [ebp - 0x4c4]
mov edx, dword [ebp - 0x4f8]
mov eax, dword [ebp - 0x4f4]
mov esi, dword [ebp - 0x4c0]
sub edx, edi
sub eax, ecx
mov edi, dword [ebp - 0x4f0]
or edx, eax
mov ecx, dword [ebp - 0x4bc]
mov eax, dword [ebp - 0x4ec]
sub edi, esi
or edx, edi
mov esi, dword [ebp - 0x4b8]
mov edi, dword [ebp - 0x4e8]
sub eax, ecx
or edx, eax
mov ecx, dword [ebp - 0x4b4]
mov eax, dword [ebp - 0x4e4]
sub edi, esi
or edx, edi
sub eax, ecx
or edx, eax
jne 0x4032ea
jmp 0x404a71
mov eax, dword [ebp - 0x58c]
sar eax, 2
lea edi, [eax + 0x1db]
jmp 0x404ac2
add eax, 0x64
jmp 0x40405c
sub eax, eax
jmp 0x404491
cmp edx, 0
jbe 0x403dd1
mov ebx, dword [ebp - 0x544]
dec ebx
mov edi, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edi
call fcn.0040a8c8
dec ebx
jne 0x404dfe
jmp 0x403dd1
push 9
pop edi
nop
nop
mov dword [ebp - 0x544], edi
jmp 0x403ca1
cmp edx, 0
jbe 0x403ff9
mov ebx, dword [ebp - 0x544]
dec ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x404e39
jmp 0x403ff9
sub eax, eax
jmp 0x4048b0
sub eax, eax
jmp 0x4047e0
dec esi
sub edi, edi
push 0xffffffffffffffff
pop eax
nop
nop
mov dword [ebp - 0x5ac], esi
and esi, 3
mov dword [ebp - 0x570], eax
mov dword [ebp - 0x578], edi
jne 0x404ed4
mov eax, dword [ebp - 0x5ac]
mov ecx, 0x51eb851f
imul ecx
mov ecx, dword [ebp - 0x5ac]
push edx
pop eax
sar ecx, 0x1f
sar eax, 5
push edx
pop edi
sbb eax, ecx
lea edx, [eax + eax*4]
lea esi, [edx + edx*4]
shl esi, 2
cmp dword [ebp - 0x5ac], esi
jne 0x404ec9
push edi
pop edx
sar edx, 7
sbb edx, ecx
lea esi, [edx + edx*4]
lea edi, [esi + esi*4]
shl edi, 4
cmp dword [ebp - 0x5ac], edi
jne 0x404ed4
pushfd
xor eax, eax
inc eax
popfd
mov dword [ebp - 0x578], eax
mov ecx, dword [ebp - 0x578]
mov eax, 0x92492493
mov edx, dword [ebp - 0x598]
lea ebx, [ebx + ecx + 0x16d]
push ebx
pop ecx
sbb ecx, edx
add ecx, 0x17e
imul ecx
push ecx
pop eax
sar eax, 0x1f
lea esi, [ecx + edx]
sar esi, 2
sbb esi, eax
lea edi, [esi*8]
sbb edi, esi
sbb ecx, edi
sbb ebx, ecx
add ebx, 3
mov dword [ebp - 0x574], ebx
jmp 0x40421e
mov eax, dword [ebp - 0x5a0]
shr ebx, 0x1f
push 9
pop edi
nop
nop
mov byte [ebp - 0x538], bl
imul edx, ecx, 0x2710
push 0x14
pop esi
nop
nop
lea ebx, [eax + eax*4]
lea ecx, [ebx + ebx*4]
mov ebx, dword [ebp - 0x584]
lea eax, [edx + ecx*4]
lea ecx, [eax + ebx]
jmp 0x403f7d
mov ecx, dword [ebp + 0xc]
pushfd
xor esi, esi
inc esi
popfd
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp + 0xc], ecx
mov ebx, dword [ebp - 0x508]
mov dword [esp], ebx
call fcn.0040a958
jmp 0x404608
sub eax, eax
jmp 0x403d84
cmp edx, 0
jbe 0x4044e2
mov ebx, dword [ebp - 0x544]
dec ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x404f94
jmp 0x4044e2
cmp edx, 0
jbe 0x4045c5
push edx
pop ebx
mov edx, dword [ebp + 0xc]
mov dword [esp], 0x30
mov dword [esp + 4], edx
call fcn.0040a8c8
dec ebx
jne 0x404fba
jmp 0x4045c5
shr ebx, 0x1f
push 5
nop
nop
pop edi
lea eax, [ecx + ecx*4]
mov byte [ebp - 0x538], bl
mov ebx, dword [ebp - 0x5a0]
lea edx, [eax + eax*4]
sub esi, esi
lea ecx, [ebx + edx*4]
jmp 0x403f7d
shr ebx, 0x1f
push 6
nop
pop edi
nop
lea eax, [ecx + ecx*4]
mov byte [ebp - 0x538], bl
mov ebx, dword [ebp - 0x5a0]
lea edx, [eax + eax*4]
push 4
pop esi
nop
nop
lea ecx, [ebx + edx*4]
jmp 0x403f7d
sub eax, eax
jmp 0x404574
mov ebx, 0x40d50d
mov dword [ebp - 0x508], ebx
jmp 0x404552